/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.basics.location; import static com.opengamma.strata.collect.TestHelper.assertJodaConvert; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertSame; import static org.testng.Assert.assertTrue; import java.util.Set; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * Test Country. */ @Test public class CountryTest { //----------------------------------------------------------------------- public void test_constants() { assertEquals(Country.of("EU"), Country.EU); assertEquals(Country.of("BE"), Country.BE); assertEquals(Country.of("CH"), Country.CH); assertEquals(Country.of("CZ"), Country.CZ); assertEquals(Country.of("DE"), Country.DE); assertEquals(Country.of("DK"), Country.DK); assertEquals(Country.of("ES"), Country.ES); assertEquals(Country.of("FI"), Country.FI); assertEquals(Country.of("FR"), Country.FR); assertEquals(Country.of("GB"), Country.GB); assertEquals(Country.of("GR"), Country.GR); assertEquals(Country.of("HU"), Country.HU); assertEquals(Country.of("IS"), Country.IS); assertEquals(Country.of("IT"), Country.IT); assertEquals(Country.of("LU"), Country.LU); assertEquals(Country.of("NL"), Country.NL); assertEquals(Country.of("NO"), Country.NO); assertEquals(Country.of("PL"), Country.PL); assertEquals(Country.of("PT"), Country.PT); assertEquals(Country.of("SE"), Country.SE); assertEquals(Country.of("SK"), Country.SK); assertEquals(Country.of("TR"), Country.TR); assertEquals(Country.of("AR"), Country.AR); assertEquals(Country.of("BR"), Country.BR); assertEquals(Country.of("CA"), Country.CA); assertEquals(Country.of("CL"), Country.CL); assertEquals(Country.of("MX"), Country.MX); assertEquals(Country.of("US"), Country.US); assertEquals(Country.of("AU"), Country.AU); assertEquals(Country.of("CN"), Country.CN); assertEquals(Country.of("EG"), Country.EG); assertEquals(Country.of("HK"), Country.HK); assertEquals(Country.of("ID"), Country.ID); assertEquals(Country.of("IL"), Country.IL); assertEquals(Country.of("IN"), Country.IN); assertEquals(Country.of("JP"), Country.JP); assertEquals(Country.of("KR"), Country.KR); assertEquals(Country.of("MY"), Country.MY); assertEquals(Country.of("NZ"), Country.NZ); assertEquals(Country.of("RU"), Country.RU); assertEquals(Country.of("SA"), Country.SA); assertEquals(Country.of("SG"), Country.SG); assertEquals(Country.of("TH"), Country.TH); assertEquals(Country.of("ZA"), Country.ZA); } //----------------------------------------------------------------------- public void test_getAvailable() { Set<Country> available = Country.getAvailableCountries(); assertTrue(available.contains(Country.US)); assertTrue(available.contains(Country.EU)); assertTrue(available.contains(Country.JP)); assertTrue(available.contains(Country.GB)); assertTrue(available.contains(Country.CH)); assertTrue(available.contains(Country.AU)); assertTrue(available.contains(Country.CA)); } //----------------------------------------------------------------------- public void test_of_String() { Country test = Country.of("SE"); assertEquals(test.getCode(), "SE"); assertSame(test, Country.of("SE")); } public void test_of_String_unknownCountryCreated() { Country test = Country.of("AA"); assertEquals(test.getCode(), "AA"); assertSame(test, Country.of("AA")); } @DataProvider(name = "ofBad") Object[][] data_ofBad() { return new Object[][] { {""}, {"A"}, {"gb"}, {"ABC"}, {"123"}, {" GB"}, {null}, }; } @Test(dataProvider = "ofBad", expectedExceptions = IllegalArgumentException.class) public void test_of_String_bad(String input) { Country.of(input); } //----------------------------------------------------------------------- public void test_parse_String() { Country test = Country.parse("GB"); assertEquals(test.getCode(), "GB"); assertSame(test, Country.GB); } public void test_parse_String_unknownCountryCreated() { Country test = Country.parse("zy"); assertEquals(test.getCode(), "ZY"); assertSame(test, Country.of("ZY")); } public void test_parse_String_lowerCase() { Country test = Country.parse("gb"); assertEquals(test.getCode(), "GB"); assertSame(test, Country.GB); } @DataProvider(name = "parseBad") Object[][] data_parseBad() { return new Object[][] { {""}, {"A"}, {"ABC"}, {"123"}, {" GB"}, {null}, }; } @Test(dataProvider = "parseBad", expectedExceptions = IllegalArgumentException.class) public void test_parse_String_bad(String input) { Country.parse(input); } //----------------------------------------------------------------------- public void test_compareTo() { Country a = Country.EU; Country b = Country.GB; Country c = Country.JP; assertEquals(0, a.compareTo(a)); assertEquals(0, b.compareTo(b)); assertEquals(0, c.compareTo(c)); assertTrue(a.compareTo(b) < 0); assertTrue(b.compareTo(a) > 0); assertTrue(a.compareTo(c) < 0); assertTrue(c.compareTo(a) > 0); assertTrue(b.compareTo(c) < 0); assertTrue(c.compareTo(b) > 0); } @Test(expectedExceptions = NullPointerException.class) public void test_compareTo_null() { Country.EU.compareTo(null); } //----------------------------------------------------------------------- public void test_equals_hashCode() { Country a1 = Country.GB; Country a2 = Country.of("GB"); Country b = Country.EU; assertEquals(a1.equals(a1), true); assertEquals(a1.equals(b), false); assertEquals(a1.equals(a2), true); assertEquals(a2.equals(a1), true); assertEquals(a2.equals(a2), true); assertEquals(a2.equals(b), false); assertEquals(b.equals(a1), false); assertEquals(b.equals(a2), false); assertEquals(b.equals(b), true); assertEquals(a1.hashCode(), a2.hashCode()); } public void test_equals_bad() { Country a = Country.GB; assertEquals(a.equals(null), false); assertEquals(a.equals("String"), false); assertEquals(a.equals(new Object()), false); } //----------------------------------------------------------------------- public void test_toString() { Country test = Country.GB; assertEquals("GB", test.toString()); } //----------------------------------------------------------------------- public void test_serialization() { assertSerialization(Country.GB); assertSerialization(Country.of("US")); } public void test_jodaConvert() { assertJodaConvert(Country.class, Country.GB); assertJodaConvert(Country.class, Country.of("US")); } }