public void TestExhaustive() { int counter = 0; CanonicalIterator it = new CanonicalIterator(""); /* * CanonicalIterator slowIt = new CanonicalIterator(""); * slowIt.SKIP_ZEROS = false; */ //Transliterator name = Transliterator.getInstance("[^\\u0020-\\u007F] name"); //Set itSet = new TreeSet(); //Set slowItSet = new TreeSet(); for (int i = 0; i < 0x10FFFF; ++i) { // skip characters we know don't have decomps UCharacterCategory type = UCharacter.GetType(i); if (type == UCharacterCategory.OtherNotAssigned || type == UCharacterCategory.PrivateUse || type == UCharacterCategory.Surrogate) { continue; } if ((++counter % 5000) == 0) { Logln("Testing " + Utility.Hex(i, 0)); } string s = UTF16.ValueOf(i); CharacterTest(s, i, it); CharacterTest(s + "\u0345", i, it); } }
/// <summary> /// Converts a <see cref="UCharacterCategory"/> to an <see cref="int"/>. /// Same as <c>(int)<paramref name="characterCategory"/></c>. /// </summary> /// <param name="characterCategory">This <see cref="UCharacterCategory"/>.</param> /// <returns>This category as <see cref="int"/>.</returns> public static int ToInt32(this UCharacterCategory characterCategory) // ICU4N TODO: Add this extension to all main enums { return((int)characterCategory); }
/// <summary> /// Gets the name of the argument category. /// </summary> /// <param name="category">Category to retrieve name.</param> /// <returns>Category name.</returns> /// <stable>ICU 2.1</stable> // ICU4N NOTE: Since ToString() cannot be changed from the default on an Enum, // we have renamed this method AsString(). public static string AsString(this UCharacterCategory category) { switch (category) { case UCharacterCategory.UppercaseLetter: return("Letter, Uppercase"); case UCharacterCategory.LowercaseLetter: return("Letter, Lowercase"); case UCharacterCategory.TitlecaseLetter: return("Letter, Titlecase"); case UCharacterCategory.ModifierLetter: return("Letter, Modifier"); case UCharacterCategory.OtherLetter: return("Letter, Other"); case UCharacterCategory.NonSpacingMark: return("Mark, Non-Spacing"); case UCharacterCategory.EnclosingMark: return("Mark, Enclosing"); case UCharacterCategory.SpacingCombiningMark: return("Mark, Spacing Combining"); case UCharacterCategory.DecimalDigitNumber: return("Number, Decimal Digit"); case UCharacterCategory.LetterNumber: return("Number, Letter"); case UCharacterCategory.OtherNumber: return("Number, Other"); case UCharacterCategory.SpaceSeparator: return("Separator, Space"); case UCharacterCategory.LineSeparator: return("Separator, Line"); case UCharacterCategory.ParagraphSeparator: return("Separator, Paragraph"); case UCharacterCategory.Control: return("Other, Control"); case UCharacterCategory.Format: return("Other, Format"); case UCharacterCategory.PrivateUse: return("Other, Private Use"); case UCharacterCategory.Surrogate: return("Other, Surrogate"); case UCharacterCategory.DashPunctuation: return("Punctuation, Dash"); case UCharacterCategory.OpenPunctuation: return("Punctuation, Open"); case UCharacterCategory.ClosePunctuation: return("Punctuation, Close"); case UCharacterCategory.ConnectorPunctuation: return("Punctuation, Connector"); case UCharacterCategory.OtherPunctuation: return("Punctuation, Other"); case UCharacterCategory.MathSymbol: return("Symbol, Math"); case UCharacterCategory.CurrencySymbol: return("Symbol, Currency"); case UCharacterCategory.ModifierSymbol: return("Symbol, Modifier"); case UCharacterCategory.OtherSymbol: return("Symbol, Other"); case UCharacterCategory.InitialQuotePunctuation: return("Punctuation, Initial quote"); case UCharacterCategory.FinalQuotePunctuation: return("Punctuation, Final quote"); default: return("Unassigned"); } }