ICU-2912 icu4j tests should be more reproducible
X-SVN-Rev: 12082
This commit is contained in:
parent
b90239700b
commit
f89b98bac7
@ -5,8 +5,8 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*
|
*
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestFmwk.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/TestFmwk.java,v $
|
||||||
* $Date: 2003/05/16 23:37:01 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.44 $
|
* $Revision: 1.45 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -62,6 +62,12 @@ public class TestFmwk extends AbstractTestLog {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// use this instead of new random so we get a consistent seed
|
||||||
|
// for our tests
|
||||||
|
protected Random createRandom() {
|
||||||
|
return new Random(params.seed);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A test that has no test methods itself, but instead runs other tests.
|
* A test that has no test methods itself, but instead runs other tests.
|
||||||
*
|
*
|
||||||
|
@ -50,7 +50,7 @@ public class CollationMonkeyTest extends TestFmwk {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Random rand = new Random();
|
Random rand = createRandom(); // use test framework's random seed
|
||||||
int s = rand.nextInt(0x7fff) % source.length();
|
int s = rand.nextInt(0x7fff) % source.length();
|
||||||
int t = rand.nextInt(0x7fff) % source.length();
|
int t = rand.nextInt(0x7fff) % source.length();
|
||||||
int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
|
int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
|
||||||
@ -127,7 +127,7 @@ public class CollationMonkeyTest extends TestFmwk {
|
|||||||
* the numbers will be different every time we run.
|
* the numbers will be different every time we run.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Random rand = new Random();
|
Random rand = createRandom(); // use test framework's random seed
|
||||||
int s = rand.nextInt(0x7fff) % source.length();
|
int s = rand.nextInt(0x7fff) % source.length();
|
||||||
int t = rand.nextInt(0x7fff) % source.length();
|
int t = rand.nextInt(0x7fff) % source.length();
|
||||||
int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
|
int slen = Math.abs(rand.nextInt(0x7fff) % source.length() - source.length()) % source.length();
|
||||||
@ -319,4 +319,4 @@ public class CollationMonkeyTest extends TestFmwk {
|
|||||||
target += "]";
|
target += "]";
|
||||||
return target;
|
return target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
* others. All Rights Reserved. *
|
* others. All Rights Reserved. *
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/DateFormatRoundTripTest.java,v $
|
||||||
* $Date: 2003/05/14 19:03:15 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.4 $
|
* $Revision: 1.5 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -36,7 +36,7 @@ public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
private int SPARSENESS = 18;
|
private int SPARSENESS = 18;
|
||||||
private int TRIALS = 4;
|
private int TRIALS = 4;
|
||||||
private int DEPTH = 5;
|
private int DEPTH = 5;
|
||||||
private Random ran = new Random();
|
private Random ran;
|
||||||
|
|
||||||
public static void main(String[] args) throws Exception {
|
public static void main(String[] args) throws Exception {
|
||||||
new DateFormatRoundTripTest().run(args);
|
new DateFormatRoundTripTest().run(args);
|
||||||
@ -45,7 +45,8 @@ public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
public void TestDateFormatRoundTrip() {
|
public void TestDateFormatRoundTrip() {
|
||||||
dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G");
|
dateFormat = new SimpleDateFormat("EEE MMM dd HH:mm:ss.SSS zzz yyyy G");
|
||||||
getFieldCal = Calendar.getInstance();
|
getFieldCal = Calendar.getInstance();
|
||||||
|
ran = createRandom(); // use test framework's random seed
|
||||||
|
|
||||||
final Locale[] avail = DateFormat.getAvailableLocales();
|
final Locale[] avail = DateFormat.getAvailableLocales();
|
||||||
int locCount = avail.length;
|
int locCount = avail.length;
|
||||||
logln("DateFormat available locales: " + locCount);
|
logln("DateFormat available locales: " + locCount);
|
||||||
@ -269,4 +270,4 @@ public class DateFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
a *= 365.25 * 24 * 60 * 60 * 1000;
|
a *= 365.25 * 24 * 60 * 60 * 1000;
|
||||||
return new Date((long)a);
|
return new Date((long)a);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/***************************************************************************************
|
/***************************************************************************************
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestDateFormat.java,v $
|
||||||
* $Date: 2003/05/14 19:03:15 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.6 $
|
* $Revision: 1.7 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -48,7 +48,8 @@ public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
private DateFormat fFormat = DateFormat.getInstance();
|
private DateFormat fFormat = DateFormat.getInstance();
|
||||||
private String fTestName = new String("getInstance");
|
private String fTestName = new String("getInstance");
|
||||||
private int fLimit = 3; // How many iterations it should take to reach convergence
|
private int fLimit = 3; // How many iterations it should take to reach convergence
|
||||||
|
private Random random; // initialized in randDouble
|
||||||
|
|
||||||
public IntlTestDateFormat() {
|
public IntlTestDateFormat() {
|
||||||
//Constructure
|
//Constructure
|
||||||
}
|
}
|
||||||
@ -202,6 +203,9 @@ public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
|
|
||||||
// Return a random double from 0.01 to 1, inclusive
|
// Return a random double from 0.01 to 1, inclusive
|
||||||
private double randDouble() {
|
private double randDouble() {
|
||||||
|
if (random == null) {
|
||||||
|
random = createRandom();
|
||||||
|
}
|
||||||
// Assume 8-bit (or larger) rand values. Also assume
|
// Assume 8-bit (or larger) rand values. Also assume
|
||||||
// that the system rand() function is very poor, which it always is.
|
// that the system rand() function is very poor, which it always is.
|
||||||
// double d;
|
// double d;
|
||||||
@ -222,8 +226,7 @@ public class IntlTestDateFormat extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
// else if (e > -1.0) d /= pow(10.0, e+1);
|
// else if (e > -1.0) d /= pow(10.0, e+1);
|
||||||
// }
|
// }
|
||||||
// return d;
|
// return d;
|
||||||
Random rand = new Random();
|
return random.nextDouble();
|
||||||
return rand.nextDouble();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void TestAvailableLocales() {
|
public void TestAvailableLocales() {
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
* others. All Rights Reserved. *
|
* others. All Rights Reserved. *
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/IntlTestNumberFormat.java,v $
|
||||||
* $Date: 2003/05/19 21:08:58 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.5 $
|
* $Revision: 1.6 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -136,8 +136,9 @@ public class IntlTestNumberFormat extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
tryIt(-100);
|
tryIt(-100);
|
||||||
tryIt(-1913860352);
|
tryIt(-1913860352);
|
||||||
|
|
||||||
|
Random random = createRandom(); // use test framework's random seed
|
||||||
for (int j = 0; j < 10; j++) {
|
for (int j = 0; j < 10; j++) {
|
||||||
double d = Math.random()*2e10 - 1e10;
|
double d = random.nextDouble()*2e10 - 1e10;
|
||||||
tryIt(d);
|
tryIt(d);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
* others. All Rights Reserved. *
|
* others. All Rights Reserved. *
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/format/NumberFormatRoundTripTest.java,v $
|
||||||
* $Date: 2003/05/14 19:03:16 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.3 $
|
* $Revision: 1.4 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -19,6 +19,7 @@ package com.ibm.icu.dev.test.format;
|
|||||||
|
|
||||||
import com.ibm.icu.text.*;
|
import com.ibm.icu.text.*;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs round-trip tests for NumberFormat
|
* Performs round-trip tests for NumberFormat
|
||||||
@ -83,8 +84,12 @@ public class NumberFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
/**
|
/**
|
||||||
* Return a random value from -range..+range.
|
* Return a random value from -range..+range.
|
||||||
*/
|
*/
|
||||||
|
private Random random;
|
||||||
public double randomDouble(double range) {
|
public double randomDouble(double range) {
|
||||||
return Math.random() * range;
|
if (random == null) {
|
||||||
|
random = createRandom(); // use test framework's random seed
|
||||||
|
}
|
||||||
|
return random.nextDouble() * range;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void _test(NumberFormat fmt) {
|
public void _test(NumberFormat fmt) {
|
||||||
@ -231,4 +236,4 @@ public class NumberFormatRoundTripTest extends com.ibm.icu.dev.test.TestFmwk {
|
|||||||
|
|
||||||
return Math.abs(error);
|
return Math.abs(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*
|
*
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/BasicTest.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/BasicTest.java,v $
|
||||||
* $Date: 2003/05/14 19:03:17 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.29 $
|
* $Revision: 1.30 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -1486,8 +1486,7 @@ public class BasicTest extends TestFmwk {
|
|||||||
|
|
||||||
/* random checks of long strings */
|
/* random checks of long strings */
|
||||||
//srand((unsigned)time( NULL ));
|
//srand((unsigned)time( NULL ));
|
||||||
Random rand = new Random();
|
Random rand = createRandom(); // use test framework's random
|
||||||
|
|
||||||
|
|
||||||
for (count = 0; count < 50; count ++)
|
for (count = 0; count < 50; count ++)
|
||||||
{
|
{
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*
|
*
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/normalizer/NormalizationMonkeyTest.java,v $
|
||||||
* $Date: 2003/01/28 18:55:34 $
|
* $Date: 2003/05/23 17:37:22 $
|
||||||
* $Revision: 1.2 $
|
* $Revision: 1.3 $
|
||||||
*
|
*
|
||||||
*****************************************************************************************
|
*****************************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -25,14 +25,13 @@ public class NormalizationMonkeyTest extends TestFmwk {
|
|||||||
int loopCount = 100;
|
int loopCount = 100;
|
||||||
int maxCharCount = 20;
|
int maxCharCount = 20;
|
||||||
int maxCodePoint = 0x10ffff;
|
int maxCodePoint = 0x10ffff;
|
||||||
Random random = null;
|
Random random = null; // initialized in getTestSource
|
||||||
UnicodeNormalizer unicode_NFD;
|
UnicodeNormalizer unicode_NFD;
|
||||||
UnicodeNormalizer unicode_NFC;
|
UnicodeNormalizer unicode_NFC;
|
||||||
UnicodeNormalizer unicode_NFKD;
|
UnicodeNormalizer unicode_NFKD;
|
||||||
UnicodeNormalizer unicode_NFKC;
|
UnicodeNormalizer unicode_NFKC;
|
||||||
|
|
||||||
public NormalizationMonkeyTest() {
|
public NormalizationMonkeyTest() {
|
||||||
random = new Random();
|
|
||||||
unicode_NFD = new UnicodeNormalizer(UnicodeNormalizer.D, true);
|
unicode_NFD = new UnicodeNormalizer(UnicodeNormalizer.D, true);
|
||||||
unicode_NFC = new UnicodeNormalizer(UnicodeNormalizer.C, true);
|
unicode_NFC = new UnicodeNormalizer(UnicodeNormalizer.C, true);
|
||||||
unicode_NFKD = new UnicodeNormalizer(UnicodeNormalizer.KD, true);
|
unicode_NFKD = new UnicodeNormalizer(UnicodeNormalizer.KD, true);
|
||||||
@ -86,6 +85,9 @@ public class NormalizationMonkeyTest extends TestFmwk {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String getTestSource() {
|
String getTestSource() {
|
||||||
|
if (random == null) {
|
||||||
|
random = createRandom(); // use test framework's random seed
|
||||||
|
}
|
||||||
String source = "";
|
String source = "";
|
||||||
int i = 0;
|
int i = 0;
|
||||||
while (i < (random.nextInt(maxCharCount) + 1)) {
|
while (i < (random.nextInt(maxCharCount) + 1)) {
|
||||||
@ -99,4 +101,4 @@ public class NormalizationMonkeyTest extends TestFmwk {
|
|||||||
}
|
}
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -48,4 +48,64 @@ public class CurrencyTest extends TestFmwk {
|
|||||||
errln("FAIL: getAvailableLocales returned null");
|
errln("FAIL: getAvailableLocales returned null");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test registration.
|
||||||
|
*/
|
||||||
|
public void TestRegistration() {
|
||||||
|
final Currency jpy = Currency.getInstance("JPY");
|
||||||
|
final Currency usd = Currency.getInstance(Locale.US);
|
||||||
|
|
||||||
|
Locale fu_FU = new Locale("fu", "FU", "");
|
||||||
|
|
||||||
|
Object key1 = Currency.registerInstance(jpy, Locale.US);
|
||||||
|
Object key2 = Currency.registerInstance(jpy, fu_FU);
|
||||||
|
|
||||||
|
Currency nus = Currency.getInstance(Locale.US);
|
||||||
|
if (!nus.equals(jpy)) {
|
||||||
|
errln("expected " + jpy + " but got: " + nus);
|
||||||
|
}
|
||||||
|
|
||||||
|
// converage, make sure default factory works
|
||||||
|
Currency nus1 = Currency.getInstance(Locale.JAPAN);
|
||||||
|
if (!nus1.equals(jpy)) {
|
||||||
|
errln("expected " + jpy + " but got: " + nus1);
|
||||||
|
}
|
||||||
|
|
||||||
|
Locale[] locales = Currency.getAvailableLocales();
|
||||||
|
boolean found = false;
|
||||||
|
for (int i = 0; i < locales.length; ++i) {
|
||||||
|
if (locales[i].equals(fu_FU)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
errln("did not find locale" + fu_FU + " in currency locales");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Currency.unregister(key1)) {
|
||||||
|
errln("unable to unregister currency using key1");
|
||||||
|
}
|
||||||
|
if (!Currency.unregister(key2)) {
|
||||||
|
errln("unable to unregister currency using key2");
|
||||||
|
}
|
||||||
|
|
||||||
|
Currency nus2 = Currency.getInstance(Locale.US);
|
||||||
|
if (!nus2.equals(usd)) {
|
||||||
|
errln("expected " + usd + " but got: " + nus2);
|
||||||
|
}
|
||||||
|
|
||||||
|
locales = Currency.getAvailableLocales();
|
||||||
|
found = false;
|
||||||
|
for (int i = 0; i < locales.length; ++i) {
|
||||||
|
if (locales[i].equals(fu_FU)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (found) {
|
||||||
|
errln("found locale" + fu_FU + " in currency locales after unregister");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@
|
|||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*
|
*
|
||||||
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java,v $
|
* $Source: /xsrl/Nsvn/icu/icu4j/src/com/ibm/icu/dev/test/util/ICUServiceThreadTest.java,v $
|
||||||
* $Date: 2003/05/14 19:03:17 $
|
* $Date: 2003/05/23 17:37:23 $
|
||||||
* $Revision: 1.8 $
|
* $Revision: 1.9 $
|
||||||
*
|
*
|
||||||
*******************************************************************************
|
*******************************************************************************
|
||||||
*/
|
*/
|
||||||
@ -89,7 +89,7 @@ public class ICUServiceThreadTest extends TestFmwk
|
|||||||
Collator col = Collator.getInstance(locale);
|
Collator col = Collator.getInstance(locale);
|
||||||
return service.getDisplayNames(locale, col, null);
|
return service.getDisplayNames(locale, col, null);
|
||||||
}
|
}
|
||||||
private static final Random r = new Random();
|
private static final Random r = new Random(); // this is a multi thread test, can't 'unrandomize'
|
||||||
|
|
||||||
private static String getCLV() {
|
private static String getCLV() {
|
||||||
String c = countries[r.nextInt(countries.length)];
|
String c = countries[r.nextInt(countries.length)];
|
||||||
|
Loading…
Reference in New Issue
Block a user