blob: d5345de9608dcacd32f9bbe22eacbfa0ce1769f2 [file] [log] [blame]
/*
**************************************************************************
* Copyright (C) 2004, International Business Machines Corporation and *
* others. All Rights Reserved. *
**************************************************************************
*
*/
package com.ibm.icu.dev.test.timescale;
import com.ibm.icu.util.UniversalTimeScale;
import com.ibm.icu.dev.test.TestFmwk;
/**
* @author Owner
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates
*/
public class TimeScaleDataTest extends TestFmwk
{
/**
* Default contstructor.
*/
public TimeScaleDataTest()
{
}
private void roundTripTest(long value, int scale)
{
long rt = UniversalTimeScale.toLong(UniversalTimeScale.from(value, scale), scale);
if (rt != value) {
errln("Round-trip error: time scale = " + scale + ", value = " + value + ", round-trip = " + rt);
}
}
private void toLimitTest(long toLimit, long fromLimit, int scale)
{
long result = UniversalTimeScale.toLong(toLimit, scale);
if (result != fromLimit) {
errln("toLimit failure: scale = " + scale + ", toLimit = " + toLimit +
", toLong(toLimit, scale) = " + result + ", fromLimit = " + fromLimit);
}
}
private void epochOffsetTest(long epochOffset, long units, int scale)
{
long universalEpoch = epochOffset * units;
long local = UniversalTimeScale.toLong(universalEpoch, scale);
if (local != 0) {
errln("toLong(epochOffset, scale): scale = " + scale + ", epochOffset = " + universalEpoch +
", result = " + local);
}
local = UniversalTimeScale.toLong(0, scale);
if (local != -epochOffset) {
errln("toLong(0, scale): scale = " + scale + ", result = " + local);
}
long universal = UniversalTimeScale.from(-epochOffset, scale);
if (universal != 0) {
errln("from(-epochOffest, scale): scale = " + scale + ", epochOffset = " + epochOffset +
", result = " + universal);
}
universal = UniversalTimeScale.from(0, scale);
if (universal != universalEpoch) {
errln("from(0, scale): scale = " + scale + ", result = " + universal);
}
}
public void TestEpochOffsets()
{
for (int scale = 0; scale < UniversalTimeScale.MAX_SCALE; scale += 1) {
long units = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.UNITS_VALUE);
long epochOffset = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.EPOCH_OFFSET_VALUE);
epochOffsetTest(epochOffset, units, scale);
}
}
public void TestFromLimits()
{
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);
roundTripTest(fromMin, scale);
roundTripTest(fromMax, scale);
}
}
public void TestToLimits()
{
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);
long toMin = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MIN_VALUE);
long toMax = UniversalTimeScale.getTimeScaleValue(scale, UniversalTimeScale.TO_MAX_VALUE);
toLimitTest(toMin, fromMin, scale);
toLimitTest(toMax, fromMax, scale);
}
}
public static void main(String[] args)
{
new TimeScaleDataTest().run(args);
}
}