--- old/test/java/time/test/java/time/TestClock_System.java 2015-02-23 18:30:13.000000000 +0100 +++ new/test/java/time/test/java/time/TestClock_System.java 2015-02-23 18:30:13.000000000 +0100 @@ -66,6 +66,9 @@ import java.time.Clock; import java.time.Instant; import java.time.ZoneId; +import java.time.ZoneOffset; +import java.util.HashMap; +import java.util.Map; import org.testng.annotations.Test; @@ -76,6 +79,7 @@ public class TestClock_System { private static final ZoneId PARIS = ZoneId.of("Europe/Paris"); + private static final Clock systemUTC = Clock.systemUTC(); public void test_withZone_same() { Clock test = Clock.system(PARIS); @@ -90,6 +94,32 @@ } //----------------------------------------------------------------------- + // Test for 8073394 + public void test_systemUTC() { + Map clocks = new HashMap<>(); + clocks.put("Clock.systemUTC()#1", Clock.systemUTC()); + clocks.put("Clock.systemUTC()#2", Clock.systemUTC()); + clocks.put("Clock.system(ZoneOffset.UTC)#1", Clock.system(ZoneOffset.UTC)); + clocks.put("Clock.system(ZoneOffset.UTC)#2", Clock.system(ZoneOffset.UTC)); + + clocks.forEach(TestClock_System::checkSystemUTC); + } + + static String toString(Clock c) { + return c == null ? null : + c + " " + c.getClass().getName() + "@" + System.identityHashCode(c); + } + + static void checkSystemUTC(String s, Clock c) { + System.out.println("Checking " + s); + if (c != systemUTC) { + throw new RuntimeException("Unexpected clock instance for " + s + ": " + + "\n\texpected: " + toString(systemUTC) + + "\n\tactual: " + toString(c)); + } + } + + //----------------------------------------------------------------------- private static String formatTime(String prefix, Instant time) { return prefix + ": " + time + " - seconds: "