001package intermediate;
002
003import com.sandwich.koan.Koan;
004
005import java.text.DateFormat;
006import java.text.NumberFormat;
007import java.util.Calendar;
008import java.util.Date;
009import java.util.Locale;
010
011import static com.sandwich.koan.constant.KoanConstants.__;
012import static com.sandwich.util.Assert.assertEquals;
013
014public class AboutLocale {
015
016    @Koan
017    public void localizedOutputOfDates() {
018        Calendar cal = Calendar.getInstance();
019        cal.set(2011, 3, 3);
020        Date date = cal.getTime();
021        Locale localeBR = new Locale("pt", "BR"); // portuguese, Brazil
022        DateFormat dateformatBR = DateFormat.getDateInstance(DateFormat.FULL, localeBR);
023        assertEquals(dateformatBR.format(date), __);
024
025        Locale localeJA = new Locale("de"); // German
026        DateFormat dateformatJA = DateFormat.getDateInstance(DateFormat.FULL, localeJA);
027        // Well if you don't know how to type these characters, try "de", "it" or "us" ;-)
028        assertEquals(dateformatJA.format(date), __);
029    }
030
031    @Koan
032    public void getCountryInformation() {
033        Locale locBR = new Locale("pt", "BR");
034        assertEquals(locBR.getDisplayCountry(), __);
035        assertEquals(locBR.getDisplayCountry(locBR), __);
036
037        Locale locCH = new Locale("it", "CH");
038        assertEquals(locCH.getDisplayCountry(), __);
039        assertEquals(locCH.getDisplayCountry(locCH), __);
040        assertEquals(locCH.getDisplayCountry(new Locale("de", "CH")), __);
041    }
042
043    @Koan
044    public void formatCurrency() {
045        float someAmount = 442.23f; // Don't use floats for money in real life. Really. It's a bad idea.
046        Locale locBR = new Locale("pt", "BR");
047        NumberFormat nf = NumberFormat.getCurrencyInstance(locBR);
048        assertEquals(nf.format(someAmount), __);
049    }
050}