2005-09-01 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / corlib / Mono.Globalization.Unicode / TestDriver.cs
index 384da24d62c6c576737ab89b4aa8a46a4e7b54e0..b51bfa3ca3ae9a47b74d3c53f618037fe55e1f61 100644 (file)
@@ -7,22 +7,40 @@ namespace Mono.Globalization.Unicode
 {
        class TestDriver
        {
-               System.IO.TextWriter Output = Console.Out;
-
                SimpleCollator coll = new SimpleCollator (CultureInfo.InvariantCulture);
 
                #region Testing bits
 
-               static void Main ()
+               static void Main (string [] args)
+               {
+                       if (args.Length > 0 && args [0] == "--generate")
+                               new TestDriver ().Generate ();
+                       if (args.Length > 0 && args [0] == "--check")
+                               new TestDriver ().CheckCultures ();
+                       else
+                               new TestDriver ().Run ();
+               }
+
+               void CheckCultures ()
                {
-                       new TestDriver ().Run ();
+                       foreach (CultureInfo ci in CultureInfo.GetCultures (
+                               CultureTypes.AllCultures))
+                               Console.WriteLine ("Culture {0}({1}) : OK: {2}", ci.LCID, ci.Name, new SimpleCollator (ci));
                }
 
                void Run ()
                {
+LastIndexOf ("\u30D1\u30FC", "\u30A2", CompareOptions.IgnoreNonSpace);
+return;
+                       /*
                        DumpSortKey ("AE");
                        DumpSortKey ("\u00C6");
                        DumpSortKey ("ABCABC", 5, 1, CompareOptions.IgnoreCase);
+                       DumpSortKey ("-");
+                       DumpSortKey ("--");
+                       DumpSortKey ("A-B-C");
+                       DumpSortKey ("A\u0304");
+                       DumpSortKey ("\u0100");
 
                        Compare ("1", "2");
                        Compare ("A", "a");
@@ -34,12 +52,14 @@ namespace Mono.Globalization.Unicode
                        Compare ("AB\u01c0C", "A\u01c0B\u01c0C", CompareOptions.IgnoreSymbols);
                        Compare ("A\u0304", "\u0100"); // diacritical weight addition
                        Compare ("ABCABC", 5, 1, "c", 0, 1, CompareOptions.IgnoreCase);
+                       Compare ("-d:NET_1_1", 0, 1, "-", 0, 1, CompareOptions.None);
 
                        IndexOf ("ABC", '1', CompareOptions.None);
                        IndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
                        IndexOf ("ABCABC", '\uFF22', CompareOptions.IgnoreCase | CompareOptions.IgnoreWidth);
                        IndexOf ("ABCDE", '\u0117', CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
                        IndexOf ("ABCABC", 'B', 1, 5, CompareOptions.IgnoreCase);
+                       IndexOf ("\u00E6", 'a', CompareOptions.None);
 
                        LastIndexOf ("ABC", '1', CompareOptions.None);
                        LastIndexOf ("ABCABC", 'c', CompareOptions.IgnoreCase);
@@ -50,11 +70,25 @@ namespace Mono.Globalization.Unicode
                        IsPrefix ("BC", "c", CompareOptions.IgnoreCase);
                        IsPrefix ("C", "c", CompareOptions.IgnoreCase);
                        IsPrefix ("EDCBA", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
+                       IsPrefix ("ABC", "AB", CompareOptions.IgnoreCase);
+                       IsPrefix ("ae", "\u00E6", CompareOptions.None);
+                       IsPrefix ("\u00E6", "ae", CompareOptions.None);
+                       IsPrefix ("\u00E6", "a", CompareOptions.None);
+                       IsPrefix ("\u00E6s", "ae", CompareOptions.None);
+                       IsPrefix ("\u00E6", "aes", CompareOptions.None);
+                       IsPrefix ("--start", "--", CompareOptions.None);
+                       IsPrefix ("-d:NET_1_1", "-", CompareOptions.None);
+                       IsPrefix ("-d:NET_1_1", "@", CompareOptions.None);
 
                        IsSuffix ("ABC", "c", CompareOptions.IgnoreCase);
                        IsSuffix ("BC", "c", CompareOptions.IgnoreCase);
                        IsSuffix ("CBA", "c", CompareOptions.IgnoreCase);
                        IsSuffix ("ABCDE", "\u0117", CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase);
+                       IsSuffix ("\u00E6", "a", CompareOptions.None);
+                       IsSuffix ("\u00E6", "e", CompareOptions.None);
+                       IsSuffix ("\u00E6", "ae", CompareOptions.None);
+                       IsSuffix ("ae", "\u00E6", CompareOptions.None);
+                       IsSuffix ("e", "\u00E6", CompareOptions.None);
 
                        IndexOf ("ABC", "1", CompareOptions.None);
                        IndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
@@ -63,6 +97,8 @@ namespace Mono.Globalization.Unicode
                        IndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
                        IndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
                        IndexOf ("ABCDEF", "BCD", 0, 3, CompareOptions.IgnoreCase);
+                       IndexOf ("-ABC", "-", CompareOptions.None);
+                       IndexOf ("--ABC", "--", CompareOptions.None);
 
                        LastIndexOf ("ABC", "1", CompareOptions.None);
                        LastIndexOf ("ABCABC", "c", CompareOptions.IgnoreCase);
@@ -71,22 +107,46 @@ namespace Mono.Globalization.Unicode
                        LastIndexOf ("ABCABC", "BC", CompareOptions.IgnoreCase);
                        LastIndexOf ("BBCBBC", "BC", CompareOptions.IgnoreCase);
                        LastIndexOf ("original", "rig", CompareOptions.None);
-                       Console.WriteLine ("original".LastIndexOf ("rig"));
+                       LastIndexOf ("\u00E6", "ae", CompareOptions.None);
+                       LastIndexOf ("-ABC", "-", CompareOptions.None);
+                       LastIndexOf ("--ABC", "--", CompareOptions.None);
+                       */
+
+                       coll = new SimpleCollator (new CultureInfo ("hu"));
+                       DumpSortKey ("ZSAZS1");
+                       IsSuffix ("zs", "z", CompareOptions.None);
+                       IsSuffix ("zs", "s", CompareOptions.None);
+                       IsSuffix ("zs", "zs", CompareOptions.None);
+                       IsSuffix ("sz", "z", CompareOptions.None);
+                       IsSuffix ("sz", "s", CompareOptions.None);
+                       IsSuffix ("--ABC", "--", CompareOptions.None);
+                       IsSuffix ("ABC--", "--", CompareOptions.None);
 
 /*
+                       coll = new SimpleCollator (new CultureInfo (""));
+                       Compare ("c\u00F4te", "cot\u00E9");
+                       DumpSortKey ("c\u00F4te");
+                       DumpSortKey ("cot\u00E9");
+                       coll = new SimpleCollator (new CultureInfo ("fr"));
+                       Compare ("c\u00F4te", "cot\u00E9");
+                       DumpSortKey ("c\u00F4te");
+                       DumpSortKey ("cot\u00E9");
+*/
+               }
+
+               void Generate ()
+               {
                        // dump sortkey for every single character.
                        for (int i = 0; i <= char.MaxValue; i++) {
-                               byte [] data = coll.GetSortKey (new string ((char) i, 1)).KeyData;
+                               byte [] data = coll.GetSortKey (new string ((char) i, 1), CompareOptions.StringSort).KeyData;
                                if (data.Length == 5 && data [0] == 1 && data [1] == 1 &&
                                        data [2] == 1 && data [3] == 1 && data [4] == 0)
                                        continue;
                                foreach (byte b in data)
-                                       Output.Write ("{0:X02} ", b);
-                               Output.WriteLine (" : {0:X04}, {1}",
+                                       Console.Write ("{0:X02} ", b);
+                               Console.WriteLine (" : {0:X04}, {1}",
                                        i, Char.GetUnicodeCategory ((char) i));
                        }
-                       Output.Close ();
-*/
                }
 
                void Compare (string s1, string s2)
@@ -96,14 +156,15 @@ namespace Mono.Globalization.Unicode
 
                void Compare (string s1, string s2, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("{0} {1} / {2}",
-                               coll.Compare (s1, s2, opt), s1, s2);
+                       Console.Error.WriteLine ("compare ({3}): {0} {1} / {2}",
+                               coll.Compare (s1, s2, opt), s1, s2, opt);
                }
 
                void Compare (string s1, int idx1, int len1, string s2, int idx2, int len2, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("{0} {1} / {2}",
-                               coll.Compare (s1, idx1, len1, s2, idx2, len2, opt), s1, s2);
+                       Console.Error.WriteLine ("compare ({3} {4} {5} {6} {7}): {0} {1} / {2}",
+                               coll.Compare (s1, idx1, len1, s2, idx2, len2, opt), s1, s2,
+                                       opt, idx1, len1, idx2, len2);
                }
 
                void IndexOf (string s, char c, CompareOptions opt)
@@ -113,8 +174,8 @@ namespace Mono.Globalization.Unicode
 
                void IndexOf (string s, char c, int idx, int len, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("cIndex: {0} {1} / {2}",
-                               coll.IndexOf (s, c, idx, len, opt), s, c);
+                       Console.Error.WriteLine ("cIndex ({3} {4} {5}): {0} {1} / {2}",
+                               coll.IndexOf (s, c, idx, len, opt), s, c, opt, idx, len);
                }
 
                void IndexOf (string s1, string s2, CompareOptions opt)
@@ -124,32 +185,38 @@ namespace Mono.Globalization.Unicode
 
                void IndexOf (string s1, string s2, int idx, int len, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("sIndex: {0} {1} / {2}",
-                               coll.IndexOf (s1, s2, idx, len, opt), s1, s2);
+                       Console.Error.WriteLine ("sIndex ({3} {4} {5}): {0} {1} / {2}",
+                               coll.IndexOf (s1, s2, idx, len, opt), s1, s2, opt, idx, len);
                }
 
                void IsPrefix (string s1, string s2, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("IsPrefix: {0} {1} / {2}",
-                               coll.IsPrefix (s1, s2, opt), s1, s2);
+                       Console.Error.WriteLine ("prefix ({3}): {0} {1} / {2}",
+                               coll.IsPrefix (s1, s2, opt), s1, s2, opt);
                }
 
                void LastIndexOf (string s, char c, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("cLast: {0} {1} / {2}",
-                               coll.LastIndexOf (s, c, opt), s, c);
+                       Console.Error.WriteLine ("cLast ({3}): {0} {1} / {2}",
+                               coll.LastIndexOf (s, c, opt), s, c, opt);
                }
 
                void LastIndexOf (string s1, string s2, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("sLast: {0} {1} / {2}",
-                               coll.LastIndexOf (s1, s2, opt), s1, s2);
+                       Console.Error.WriteLine ("sLast ({3}): {0} {1} / {2}",
+                               coll.LastIndexOf (s1, s2, opt), s1, s2, opt);
+               }
+
+               void LastIndexOf (string s1, string s2, int idx, int len, CompareOptions opt)
+               {
+                       Console.Error.WriteLine ("sLast ({3},{4},{5}): {0} {1} / {2}",
+                               coll.LastIndexOf (s1, s2, idx, len, opt), s1, s2, opt, idx, len);
                }
 
                void IsSuffix (string s1, string s2, CompareOptions opt)
                {
-                       Console.Error.WriteLine ("IsSuffix: {0} {1} / {2}",
-                               coll.IsSuffix (s1, s2, opt), s1, s2);
+                       Console.Error.WriteLine ("suffix ({3}): {0} {1} / {2}",
+                               coll.IsSuffix (s1, s2, opt), s1, s2, opt);
                }
 
                void DumpSortKey (string s)
@@ -162,7 +229,7 @@ namespace Mono.Globalization.Unicode
                        byte [] data = coll.GetSortKey (s, idx, len, opt).KeyData;
                        foreach (byte b in data)
                                Console.Error.Write ("{0:X02} ", b);
-                       Console.Error.WriteLine (" : {0}", s);
+                       Console.Error.WriteLine (" : {0} ({1} {2} {3})", s, opt, idx, len);
                }
 
                #endregion