001package org.javasimon.clock; 002 003/** 004 * TestClock allows setting any arbitrary values for millis and nanos. 005 * Available for non-test code too, if for nothing else then it's easier to use in tests in other modules too. 006 * 007 * @since 3.5 008 */ 009public final class TestClock implements SimonClock { 010 011 private long millis; 012 private long nanos; 013 014 @Override 015 public long nanoTime() { 016 return nanos; 017 } 018 019 @Override 020 public long milliTime() { 021 return millis; 022 } 023 024 /** Here millis are simply nanos divided by {@link SimonClock#NANOS_IN_MILLIS}. */ 025 @Override 026 public long millisForNano(long nanos) { 027 return nanos / NANOS_IN_MILLIS; 028 } 029 030 public void setMillis(long millis) { 031 this.millis = millis; 032 } 033 034 public void setNanos(long nanos) { 035 this.nanos = nanos; 036 } 037 038 public void setMillisNanosFollow(long millis) { 039 this.millis = millis; 040 this.nanos = millis * NANOS_IN_MILLIS; 041 } 042}