1 // Copyright 2022 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.base; 6 7 import static junit.framework.Assert.assertEquals; 8 9 import androidx.test.filters.SmallTest; 10 11 import org.junit.Rule; 12 import org.junit.Test; 13 import org.junit.runner.RunWith; 14 import org.robolectric.annotation.Config; 15 16 import org.chromium.base.TimeUtils.CurrentThreadTimeMillisTimer; 17 import org.chromium.base.TimeUtils.ElapsedRealtimeMillisTimer; 18 import org.chromium.base.TimeUtils.ElapsedRealtimeNanosTimer; 19 import org.chromium.base.TimeUtils.UptimeMillisTimer; 20 import org.chromium.base.test.BaseRobolectricTestRunner; 21 22 /** Unit tests for {@link TimeUtils}. */ 23 @RunWith(BaseRobolectricTestRunner.class) 24 @Config(manifest = Config.NONE) 25 public class TimeUtilsTest { 26 @Rule public FakeTimeTestRule mFakeTime = new FakeTimeTestRule(); 27 28 @Test 29 @SmallTest testTimers()30 public void testTimers() { 31 UptimeMillisTimer uptimeTimer = new UptimeMillisTimer(); 32 ElapsedRealtimeMillisTimer realtimeTimer = new ElapsedRealtimeMillisTimer(); 33 ElapsedRealtimeNanosTimer realtimeTimerNanos = new ElapsedRealtimeNanosTimer(); 34 CurrentThreadTimeMillisTimer threadTimeTimer = new CurrentThreadTimeMillisTimer(); 35 mFakeTime.advanceMillis(1000); 36 assertEquals(1000, uptimeTimer.getElapsedMillis()); 37 assertEquals(1000, realtimeTimer.getElapsedMillis()); 38 assertEquals( 39 1000 * TimeUtils.NANOSECONDS_PER_MILLISECOND, realtimeTimerNanos.getElapsedNanos()); 40 assertEquals(1000, threadTimeTimer.getElapsedMillis()); 41 mFakeTime.deepSleepMillis(1000); 42 assertEquals(1000, uptimeTimer.getElapsedMillis()); 43 assertEquals(2000, realtimeTimer.getElapsedMillis()); 44 assertEquals( 45 2000 * TimeUtils.NANOSECONDS_PER_MILLISECOND, realtimeTimerNanos.getElapsedNanos()); 46 assertEquals(1000, threadTimeTimer.getElapsedMillis()); 47 mFakeTime.sleepMillis(1000); 48 assertEquals(2000, uptimeTimer.getElapsedMillis()); 49 assertEquals(3000, realtimeTimer.getElapsedMillis()); 50 assertEquals( 51 3000 * TimeUtils.NANOSECONDS_PER_MILLISECOND, realtimeTimerNanos.getElapsedNanos()); 52 assertEquals(1000, threadTimeTimer.getElapsedMillis()); 53 } 54 } 55