Merge pull request #347 from JamesB7/master
[mono.git] / tools / locale-builder / tests / test-culture.cs
1 using System;
2 using System.IO;
3 using System.Linq;
4 using System.Globalization;
5 using System.Text;
6 using System.Collections.Generic;
7
8 class TestCulture
9 {
10         public static void Main ()
11         {
12                 var all = CultureInfo.GetCultures (CultureTypes.SpecificCultures | CultureTypes.NeutralCultures).OrderBy (l => l.LCID);
13
14                 Console.OutputEncoding = Encoding.UTF8;
15                 var writer = Console.Out;
16         
17                 foreach (var c in all) {
18                         if (c.LCID == CultureInfo.InvariantCulture.LCID)
19                                 continue;
20
21                         writer.WriteLine ("Name: {0}, LCID 0x{1}", c.Name , c.LCID.ToString ("X4"));
22
23                         writer.WriteLine ("{0}: {1}", "DisplayName", c.DisplayName);
24                         writer.WriteLine ("{0}: {1}", "EnglishName", c.EnglishName);
25                         writer.WriteLine ("{0}: {1}", "NativeName", c.NativeName);
26                         // writer.WriteLine ("{0}: {1}", "OptionalCalendars", c.OptionalCalendars);
27                         writer.WriteLine ("{0}: {1}", "ThreeLetterISOLanguageName", c.ThreeLetterISOLanguageName);
28                         writer.WriteLine ("{0}: {1}", "ThreeLetterWindowsLanguageName", c.ThreeLetterWindowsLanguageName);
29                         writer.WriteLine ("{0}: {1}", "TwoLetterISOLanguageName", c.TwoLetterISOLanguageName);
30                         writer.WriteLine ("{0}: {1}", "Calendar", c.Calendar.GetType ());
31
32                         var df = c.DateTimeFormat;
33                         writer.WriteLine ("-- DateTimeFormat --");
34                         Dump (writer, df.AbbreviatedDayNames, "AbbreviatedDayNames");
35                         Dump (writer, df.AbbreviatedMonthGenitiveNames, "AbbreviatedMonthGenitiveNames");
36                         Dump (writer, df.AbbreviatedMonthNames, "AbbreviatedMonthNames");
37                         writer.WriteLine ("{0}: {1}", "AMDesignator", df.AMDesignator);
38                         writer.WriteLine ("{0}: {1}", "CalendarWeekRule", df.CalendarWeekRule);
39                         writer.WriteLine ("{0}: {1}", "DateSeparator", df.DateSeparator);
40                         Dump (writer, df.DayNames, "DayNames");
41                         writer.WriteLine ("{0}: {1}", "FirstDayOfWeek", df.FirstDayOfWeek);
42                         Dump (writer, df.GetAllDateTimePatterns (), "GetAllDateTimePatterns");
43                         // df.GetAbbreviatedEraName
44                         // df.GetEra
45                         // df.GetEraName
46                         writer.WriteLine ("{0}: {1}", "LongDatePattern", df.LongDatePattern);
47                         writer.WriteLine ("{0}: {1}", "LongTimePattern", df.LongTimePattern);
48                         writer.WriteLine ("{0}: {1}", "MonthDayPattern", df.MonthDayPattern);
49                         Dump (writer, df.MonthGenitiveNames, "MonthGenitiveNames");
50                         Dump (writer, df.MonthNames, "MonthNames");
51                         writer.WriteLine ("{0}: {1}", "NativeCalendarName", df.NativeCalendarName);
52                         writer.WriteLine ("{0}: {1}", "PMDesignator", df.PMDesignator);
53                         writer.WriteLine ("{0}: {1}", "ShortDatePattern", df.ShortDatePattern);
54                         Dump (writer, df.ShortestDayNames, "ShortestDayNames");
55                         writer.WriteLine ("{0}: {1}", "ShortTimePattern", df.ShortTimePattern);
56                         writer.WriteLine ("{0}: {1}", "TimeSeparator", df.TimeSeparator);
57                         writer.WriteLine ("{0}: {1}", "YearMonthPattern", df.YearMonthPattern);
58
59                         var ti = c.TextInfo;
60                         writer.WriteLine ("-- TextInfo --");
61                         writer.WriteLine ("{0}: {1}", "ANSICodePage", ti.ANSICodePage);
62                         writer.WriteLine ("{0}: {1}", "EBCDICCodePage", ti.EBCDICCodePage);
63                         writer.WriteLine ("{0}: {1}", "IsRightToLeft", ti.IsRightToLeft);
64                         writer.WriteLine ("{0}: {1}", "ListSeparator", ti.ListSeparator);
65                         writer.WriteLine ("{0}: {1}", "MacCodePage", ti.MacCodePage);
66                         writer.WriteLine ("{0}: {1}", "OEMCodePage", ti.OEMCodePage);
67
68                         var nf = c.NumberFormat;
69                         writer.WriteLine ("-- NumberFormat --");
70                         writer.WriteLine ("{0}: {1}", "CurrencyDecimalDigits", nf.CurrencyDecimalDigits);
71                         writer.WriteLine ("{0}: {1}", "CurrencyDecimalSeparator", nf.CurrencyDecimalSeparator);
72                         writer.WriteLine ("{0}: {1}", "CurrencyGroupSeparator", nf.CurrencyGroupSeparator);
73                         Dump (writer, nf.CurrencyGroupSizes, "CurrencyGroupSizes");
74                         writer.WriteLine ("{0}: {1}", "CurrencyNegativePattern", nf.CurrencyNegativePattern);
75                         writer.WriteLine ("{0}: {1}", "CurrencyPositivePattern", nf.CurrencyPositivePattern);
76                         writer.WriteLine ("{0}: {1}", "CurrencySymbol", nf.CurrencySymbol);
77                         writer.WriteLine ("{0}: {1}", "DigitSubstitution", nf.DigitSubstitution);
78                         writer.WriteLine ("{0}: {1}", "NaNSymbol", nf.NaNSymbol);
79                         Dump (writer, nf.NativeDigits, "NativeDigits");
80                         writer.WriteLine ("{0}: {1}", "NegativeInfinitySymbol", nf.NegativeInfinitySymbol);
81                         writer.WriteLine ("{0}: {1}", "NegativeSign", nf.NegativeSign);
82                         writer.WriteLine ("{0}: {1}", "NumberDecimalDigits", nf.NumberDecimalDigits);
83                         writer.WriteLine ("{0}: {1}", "NumberDecimalSeparator", nf.NumberDecimalSeparator);
84                         writer.WriteLine ("{0}: {1}", "NumberGroupSeparator", nf.NumberGroupSeparator);
85                         Dump (writer, nf.NumberGroupSizes, "NumberGroupSizes");
86                         writer.WriteLine ("{0}: {1}", "NumberNegativePattern", nf.NumberNegativePattern);
87                         writer.WriteLine ("{0}: {1}", "PercentDecimalDigits", nf.PercentDecimalDigits);
88                         writer.WriteLine ("{0}: {1}", "PercentDecimalSeparator", nf.PercentDecimalSeparator);
89                         writer.WriteLine ("{0}: {1}", "PercentGroupSeparator", nf.PercentGroupSeparator);
90                         Dump (writer, nf.PercentGroupSizes, "PercentGroupSizes");
91                         writer.WriteLine ("{0}: {1}", "PercentNegativePattern", nf.PercentNegativePattern);
92                         writer.WriteLine ("{0}: {1}", "PercentPositivePattern", nf.PercentPositivePattern);
93                         writer.WriteLine ("{0}: {1}", "PercentSymbol", nf.PercentSymbol);
94                         writer.WriteLine ("{0}: {1}", "PerMilleSymbol", nf.PerMilleSymbol);
95                         writer.WriteLine ("{0}: {1}", "PositiveInfinitySymbol", nf.PositiveInfinitySymbol);
96                         writer.WriteLine ("{0}: {1}", "PositiveSign", nf.PositiveSign);
97
98                         if (!c.IsNeutralCulture) {
99                                 var ri = new RegionInfo (c.LCID);
100                                 writer.WriteLine ("-- RegionInfo --");
101                                 writer.WriteLine ("{0}: {1}", "CurrencyEnglishName", ri.CurrencyEnglishName);
102                                 writer.WriteLine ("{0}: {1}", "CurrencyNativeName", ri.CurrencyNativeName);
103                                 writer.WriteLine ("{0}: {1}", "CurrencySymbol", ri.CurrencySymbol);
104                                 writer.WriteLine ("{0}: {1}", "DisplayName", ri.DisplayName);
105                                 writer.WriteLine ("{0}: {1}", "EnglishName", ri.EnglishName);
106                                 writer.WriteLine ("{0}: {1}", "GeoId", ri.GeoId);
107                                 writer.WriteLine ("{0}: {1}", "IsMetric", ri.IsMetric);
108                                 writer.WriteLine ("{0}: {1}", "ISOCurrencySymbol", ri.ISOCurrencySymbol);
109                                 writer.WriteLine ("{0}: {1}", "Name", ri.Name);
110                                 writer.WriteLine ("{0}: {1}", "NativeName", ri.NativeName);
111                                 writer.WriteLine ("{0}: {1}", "ThreeLetterISORegionName", ri.ThreeLetterISORegionName);
112                                 writer.WriteLine ("{0}: {1}", "ThreeLetterWindowsRegionName", ri.ThreeLetterWindowsRegionName);
113                                 writer.WriteLine ("{0}: {1}", "TwoLetterISORegionName", ri.TwoLetterISORegionName);
114                         }
115
116                         CompareInfo ci = CompareInfo.GetCompareInfo (c.LCID);
117                         writer.WriteLine ("-- CompareInfo --");
118                         writer.WriteLine ("{0}: {1}", "Name", ci.Name);
119                         //writer.WriteLine ("{0}: {1}", "Version", ci.Version);
120
121                         writer.WriteLine ();
122                 }
123         }
124
125         static void Dump<T> (TextWriter tw, T[] values, string name)
126         {
127                 tw.Write (name);
128                 tw.Write (": ");
129
130                 for (int i = 0; i < values.Length; ++i) {
131                         if (i > 0)
132                                 tw.Write (", ");
133
134                         tw.Write (values[i]);
135                 }
136
137                 tw.WriteLine ();
138         }
139 }