import static java.util.Locale.ENGLISH;
import static java.util.Locale.GERMAN;

import java.util.Locale;
import java.util.TimeZone;

public class WeirdTimeZones {

    public static void main(String[] args) {
        report("Europe/Guernsey", "BST", ENGLISH);
        report("Europe/Guernsey", "BST", GERMAN);
        report("Europe/Isle_of_Man", "BST", ENGLISH);
        report("Europe/Isle_of_Man", "BST", GERMAN);
        report("Europe/Jersey", "BST", ENGLISH);
        report("Europe/Jersey", "BST", GERMAN);
        report("Antarctica/Troll", "CEST", ENGLISH);
        report("Antarctica/Troll", "CEST", GERMAN);
    }

    private static void report(String timeZoneID, String expected, Locale locale) {
        TimeZone timeZone = TimeZone.getTimeZone(timeZoneID);
        String shortName = timeZone.getDisplayName(true, TimeZone.SHORT, locale);

        System.out.format("%s dst %s got %s expected %s for %s%n", timeZoneID,
                expected.equals(shortName) ? "OK" : "FAIL",
                shortName,
                expected,
                locale);
    }
} 