2 **************************************************************************
\r
3 * Copyright (C) 2004, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 **************************************************************************
\r
9 package com.ibm.icu.dev.test.timescale;
\r
11 import com.ibm.icu.dev.test.TestFmwk;
\r
12 import com.ibm.icu.util.UniversalTimeScale;
\r
13 import com.ibm.icu.math.BigDecimal;
\r
14 import java.util.Random;
\r
17 * This class tests the UniversalTimeScale class by
\r
18 * generating ramdon values in range and making sure
\r
19 * that they round-trip correctly.
\r
21 public class TimeScaleMonkeyTest extends TestFmwk
\r
25 * The default constructor.
\r
27 public TimeScaleMonkeyTest()
\r
31 private static final int LOOP_COUNT = 1000;
\r
32 private static final BigDecimal longMax = new BigDecimal(Long.MAX_VALUE);
\r
34 private Random ran = null;
\r
36 private long ranInt;
\r
37 private long ranMin;
\r
38 private long ranMax;
\r
40 private void initRandom(long min, long max)
\r
42 BigDecimal interval = new BigDecimal(max).subtract(new BigDecimal(min));
\r
49 ran = createRandom();
\r
52 if (interval.compareTo(longMax) < 0) {
\r
53 ranInt = interval.longValue();
\r
57 private final long randomInRange()
\r
62 value = ran.nextLong() % ranInt;
\r
71 value = ran.nextLong();
\r
72 } while (value < ranMin || value > ranMax);
\r
78 public void TestRoundTrip()
\r
80 for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
\r
81 long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
\r
82 long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
\r
85 initRandom(fromMin, fromMax);
\r
87 while (i < LOOP_COUNT) {
\r
88 long value = randomInRange();
\r
90 long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
\r
93 errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
\r
101 public static void main(String[] args)
\r
103 new TimeScaleMonkeyTest().run(args);
\r