2 ****************************************************************************
\r
3 * Copyright (C) 2004-2010, 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 java.util.Random;
\r
13 import com.ibm.icu.dev.test.TestFmwk;
\r
14 import com.ibm.icu.math.BigDecimal;
\r
15 import com.ibm.icu.util.UniversalTimeScale;
\r
18 * This class tests the UniversalTimeScale class by
\r
19 * generating ramdon values in range and making sure
\r
20 * that they round-trip correctly.
\r
22 public class TimeScaleMonkeyTest extends TestFmwk
\r
26 * The default constructor.
\r
28 public TimeScaleMonkeyTest()
\r
32 private static final int LOOP_COUNT = 1000;
\r
33 private static final BigDecimal longMax = new BigDecimal(Long.MAX_VALUE);
\r
35 private Random ran = null;
\r
37 private long ranInt;
\r
38 private long ranMin;
\r
39 private long ranMax;
\r
41 private void initRandom(long min, long max)
\r
43 BigDecimal interval = new BigDecimal(max).subtract(new BigDecimal(min));
\r
50 ran = createRandom();
\r
53 if (interval.compareTo(longMax) < 0) {
\r
54 ranInt = interval.longValue();
\r
58 private final long randomInRange()
\r
63 value = ran.nextLong() % ranInt;
\r
72 value = ran.nextLong();
\r
73 } while (value < ranMin || value > ranMax);
\r
79 public void TestRoundTrip()
\r
81 for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
\r
82 long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
\r
83 long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
\r
86 initRandom(fromMin, fromMax);
\r
88 while (i < LOOP_COUNT) {
\r
89 long value = randomInRange();
\r
91 long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
\r
94 errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
\r
102 public static void main(String[] args)
\r
104 new TimeScaleMonkeyTest().run(args);
\r