package net.time4j.tz.olson;
import net.time4j.tz.NameStyle;
import net.time4j.tz.TZID;
import net.time4j.tz.Timezone;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@RunWith(JUnit4.class)
public class PredefinedIDTest {
@Test
public void nameOfLisboa() {
TZID tzid = EUROPE.LISBON;
assertThat(tzid.canonical(), is("Europe/Lisbon"));
}
@Test
public void nameOfBerlin() {
TZID tzid = EUROPE.BERLIN;
assertThat(tzid.canonical(), is("Europe/Berlin"));
}
@Test
public void nameOfHongkong() {
TZID tzid = ASIA.HONG_KONG;
assertThat(tzid.canonical(), is("Asia/Hong_Kong"));
}
@Test
public void nameOfBuenosAires() {
TZID tzid = AMERICA.ARGENTINA.BUENOS_AIRES;
assertThat(tzid.canonical(), is("America/Argentina/Buenos_Aires"));
}
@Test
public void nameOfPortoNovo() {
TZID tzid = AFRICA.PORTO_NOVO;
assertThat(tzid.canonical(), is("Africa/Porto-Novo"));
}
@Test
public void equalsByObject() {
TZID tzid = EUROPE.BERLIN::canonical;
assertThat(tzid.equals(EUROPE.BERLIN), is(false));
}
@Test
public void equalsByCanonical() {
TZID tzid = EUROPE.BERLIN::canonical;
assertThat(
tzid.canonical().equals(EUROPE.BERLIN.canonical()),
is(true));
}
@Test
public void predefinedTZ() {
TZID tzid = AMERICA.ARGENTINA.BUENOS_AIRES;
assertThat(
Timezone.of(tzid).getID(),
is(tzid));
assertThat(
Timezone.of(tzid).getID() == tzid,
is(true));
}
@Test
public void getCity() {
StdZoneIdentifier tzid = AMERICA.ARGENTINA.BUENOS_AIRES;
assertThat(tzid.getCity(), is("Buenos_Aires"));
}
@Test
public void getRegion() {
StdZoneIdentifier tzid = AMERICA.ARGENTINA.BUENOS_AIRES;
assertThat(tzid.getRegion(), is("America/Argentina"));
}
@Test
public void getPreferredIDsOfBerlin() {
TZID tzid = EUROPE.BERLIN;
assertThat(
Timezone.getPreferredIDs(Locale.GERMANY, false, "DEFAULT"),
is(Collections.singleton(tzid)));
}
@Test
public void getSmartPreferredIDsOfUS() {
Set<TZID> prefs = Timezone.getPreferredIDs(Locale.US, true, "DEFAULT");
Map<String, List<TZID>> map = new HashMap<>();
for (TZID tzid : prefs) {
String name =
Timezone.of(tzid).getDisplayName(
NameStyle.LONG_STANDARD_TIME, Locale.US);
List<TZID> ids = map.get(name);
if (ids == null) {
ids = new ArrayList<>();
map.put(name, ids);
}
ids.add(tzid);
System.out.println(
"TZID="
+ tzid.canonical()
+ "\tName="
+ name);
}
for (String name : map.keySet()) {
assertThat(map.get(name).size(), is(1));
}
System.out.println("Phoenix: "
+ Timezone.of("America/Phoenix").getDisplayName(
NameStyle.LONG_DAYLIGHT_TIME, Locale.US));
}
}