Package com.ibm.icu.dev.test.timescale

Source Code of com.ibm.icu.dev.test.timescale.TimeScaleMonkeyTest

/*
**************************************************************************
* Copyright (C) 2004, International Business Machines Corporation and    *
* others. All Rights Reserved.                                           *
**************************************************************************
*
*/

package com.ibm.icu.dev.test.timescale;

import com.ibm.icu.dev.test.TestFmwk;
import com.ibm.icu.util.UniversalTimeScale;
import com.ibm.icu.math.BigDecimal;
import java.util.Random;

/**
* This class tests the UniversalTimeScale class by
* generating ramdon values in range and making sure
* that they round-trip correctly.
*/
public class TimeScaleMonkeyTest extends TestFmwk
{

    /**
     * The default constructor.
     */
    public TimeScaleMonkeyTest()
    {
    }
   
    private static final int LOOP_COUNT = 1000;
    private static final BigDecimal longMax = new BigDecimal(Long.MAX_VALUE);
   
    private Random ran = null;
   
    private long ranInt;
    private long ranMin;
    private long ranMax;
   
    private void initRandom(long min, long max)
    {
        BigDecimal interval = new BigDecimal(max).subtract(new BigDecimal(min));
       
        ranMin = min;
        ranMax = max;
        ranInt = 0;
       
        if (ran == null) {
            ran = createRandom();
        }
       
        if (interval.compareTo(longMax) < 0) {
            ranInt = interval.longValue();
        }
    }
   
    private final long randomInRange()
    {
        long value;
       
        if (ranInt != 0) {
            value = ran.nextLong() % ranInt;
           
            if (value < 0) {
                value = -value;
            }
           
            value += ranMin;
        } else {
            do {
                value = ran.nextLong();
            } while (value < ranMin || value > ranMax);
        }
       
        return value;
    }
   
    public void TestRoundTrip()
    {
        for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
            long fromMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MIN_VALUE);
            long fromMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.FROM_MAX_VALUE);
            int i = 0;
           
            initRandom(fromMin, fromMax);
           
            while (i < LOOP_COUNT) {
                long value = randomInRange();
                               
                long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
               
                if (rt != value) {
                    errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
                }
               
                i += 1;
            }
        }
    }

    public static void main(String[] args)
    {
        new TimeScaleMonkeyTest().run(args);
    }
}
TOP

Related Classes of com.ibm.icu.dev.test.timescale.TimeScaleMonkeyTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.