10888a09821a98ac0680fad765217302858e70fa4Paul Duffin/* 20888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Copyright (C) 2008 The Guava Authors 30888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 40888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 50888a09821a98ac0680fad765217302858e70fa4Paul Duffin * you may not use this file except in compliance with the License. 60888a09821a98ac0680fad765217302858e70fa4Paul Duffin * You may obtain a copy of the License at 70888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 80888a09821a98ac0680fad765217302858e70fa4Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 90888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 100888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Unless required by applicable law or agreed to in writing, software 110888a09821a98ac0680fad765217302858e70fa4Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 120888a09821a98ac0680fad765217302858e70fa4Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130888a09821a98ac0680fad765217302858e70fa4Paul Duffin * See the License for the specific language governing permissions and 140888a09821a98ac0680fad765217302858e70fa4Paul Duffin * limitations under the License. 150888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 160888a09821a98ac0680fad765217302858e70fa4Paul Duffin 170888a09821a98ac0680fad765217302858e70fa4Paul Duffinpackage com.google.common.testing; 180888a09821a98ac0680fad765217302858e70fa4Paul Duffin 190888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport com.google.common.annotations.GwtCompatible; 200888a09821a98ac0680fad765217302858e70fa4Paul Duffin 210888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport junit.framework.TestCase; 220888a09821a98ac0680fad765217302858e70fa4Paul Duffin 230888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport java.util.EnumSet; 240888a09821a98ac0680fad765217302858e70fa4Paul Duffinimport java.util.concurrent.TimeUnit; 250888a09821a98ac0680fad765217302858e70fa4Paul Duffin 260888a09821a98ac0680fad765217302858e70fa4Paul Duffin/** 270888a09821a98ac0680fad765217302858e70fa4Paul Duffin * Unit test for {@link FakeTicker}. 280888a09821a98ac0680fad765217302858e70fa4Paul Duffin * 290888a09821a98ac0680fad765217302858e70fa4Paul Duffin * @author Jige Yu 300888a09821a98ac0680fad765217302858e70fa4Paul Duffin */ 310888a09821a98ac0680fad765217302858e70fa4Paul Duffin@GwtCompatible(emulated = true) 320888a09821a98ac0680fad765217302858e70fa4Paul Duffinpublic class FakeTickerTest extends TestCase { 330888a09821a98ac0680fad765217302858e70fa4Paul Duffin 340888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAdvance() { 350888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker(); 360888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(0, ticker.read()); 370888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertSame(ticker, ticker.advance(10)); 380888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(10, ticker.read()); 390888a09821a98ac0680fad765217302858e70fa4Paul Duffin ticker.advance(1, TimeUnit.MILLISECONDS); 400888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(1000010L, ticker.read()); 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 420888a09821a98ac0680fad765217302858e70fa4Paul Duffin 430888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrementStep_returnsSameInstance() { 440888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker(); 450888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertSame(ticker, ticker.setAutoIncrementStep(10, TimeUnit.NANOSECONDS)); 460888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 470888a09821a98ac0680fad765217302858e70fa4Paul Duffin 480888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrementStep_nanos() { 490888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker().setAutoIncrementStep(10, TimeUnit.NANOSECONDS); 500888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(0, ticker.read()); 510888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(10, ticker.read()); 520888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(20, ticker.read()); 530888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 540888a09821a98ac0680fad765217302858e70fa4Paul Duffin 550888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrementStep_millis() { 560888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker().setAutoIncrementStep(1, TimeUnit.MILLISECONDS); 570888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(0, ticker.read()); 580888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(1000000, ticker.read()); 590888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(2000000, ticker.read()); 600888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 610888a09821a98ac0680fad765217302858e70fa4Paul Duffin 620888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrementStep_seconds() { 630888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker().setAutoIncrementStep(3, TimeUnit.SECONDS); 640888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(0, ticker.read()); 650888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(3000000000L, ticker.read()); 660888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(6000000000L, ticker.read()); 670888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 680888a09821a98ac0680fad765217302858e70fa4Paul Duffin 690888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrementStep_resetToZero() { 700888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker().setAutoIncrementStep(10, TimeUnit.NANOSECONDS); 710888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(0, ticker.read()); 720888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(10, ticker.read()); 730888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals(20, ticker.read()); 740888a09821a98ac0680fad765217302858e70fa4Paul Duffin 750888a09821a98ac0680fad765217302858e70fa4Paul Duffin for (TimeUnit timeUnit : EnumSet.allOf(TimeUnit.class)) { 760888a09821a98ac0680fad765217302858e70fa4Paul Duffin ticker.setAutoIncrementStep(0, timeUnit); 770888a09821a98ac0680fad765217302858e70fa4Paul Duffin assertEquals( 780888a09821a98ac0680fad765217302858e70fa4Paul Duffin "Expected no auto-increment when setting autoIncrementStep to 0 " + timeUnit, 790888a09821a98ac0680fad765217302858e70fa4Paul Duffin 30, ticker.read()); 800888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 810888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 820888a09821a98ac0680fad765217302858e70fa4Paul Duffin 830888a09821a98ac0680fad765217302858e70fa4Paul Duffin public void testAutoIncrement_negative() { 840888a09821a98ac0680fad765217302858e70fa4Paul Duffin FakeTicker ticker = new FakeTicker(); 850888a09821a98ac0680fad765217302858e70fa4Paul Duffin try { 860888a09821a98ac0680fad765217302858e70fa4Paul Duffin ticker.setAutoIncrementStep(-1, TimeUnit.NANOSECONDS); 870888a09821a98ac0680fad765217302858e70fa4Paul Duffin fail("Expected IllegalArgumentException"); 880888a09821a98ac0680fad765217302858e70fa4Paul Duffin } catch (IllegalArgumentException expected) { 890888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 900888a09821a98ac0680fad765217302858e70fa4Paul Duffin } 910888a09821a98ac0680fad765217302858e70fa4Paul Duffin} 920888a09821a98ac0680fad765217302858e70fa4Paul Duffin 93