Beispiel #1
0
 /// ------------------------------------------------------------------------------------
 /// <summary>
 /// Gets the natural type (i.e., not overridden) of the given character code point. This
 /// is essentially based on ICU, but we make one exception to force superscripted
 /// numbers to be considered as word-forming since these are generally used to mark
 /// tone in the vernaculars we work with (see TE-8384).
 /// </summary>
 /// <param name="codepoint">The codepoint.</param>
 /// ------------------------------------------------------------------------------------
 protected virtual ValidCharacterType GetNaturalCharType(int codepoint)
 {
     if (m_cpe.get_IsWordForming(codepoint))
     {
         return(ValidCharacterType.WordForming);
     }
     if (Icu.IsNumeric(codepoint))
     {
         foreach (string chr in s_defaultWordformingChars)
         {
             if ((int)chr[0] == codepoint)
             {
                 return(ValidCharacterType.WordForming);
             }
         }
         return(ValidCharacterType.Numeric);
     }
     return(ValidCharacterType.Other);
 }
Beispiel #2
0
        private static void VerifyNonexistentChars()
        {
            Icu.InitIcuDataDir();

            Assert.IsFalse(Icu.IsAlphabetic(kChar1));
            Assert.IsFalse(Icu.IsAlphabetic(kChar2));
            Assert.IsFalse(Icu.IsAlphabetic(kChar3));
            Assert.IsFalse(Icu.IsAlphabetic(kChar4));
            Assert.IsFalse(Icu.IsControl(kChar1));
            Assert.IsFalse(Icu.IsControl(kChar2));
            Assert.IsFalse(Icu.IsControl(kChar3));
            Assert.IsFalse(Icu.IsControl(kChar4));
            Assert.IsFalse(Icu.IsDiacritic(kChar1));
            Assert.IsFalse(Icu.IsDiacritic(kChar2));
            Assert.IsFalse(Icu.IsDiacritic(kChar3));
            Assert.IsFalse(Icu.IsDiacritic(kChar4));
            Assert.IsFalse(Icu.IsIdeographic(kChar1));
            Assert.IsFalse(Icu.IsIdeographic(kChar2));
            Assert.IsFalse(Icu.IsIdeographic(kChar3));
            Assert.IsFalse(Icu.IsIdeographic(kChar4));
            Assert.IsFalse(Icu.IsNumeric(kChar1));
            Assert.IsFalse(Icu.IsNumeric(kChar2));
            Assert.IsFalse(Icu.IsNumeric(kChar3));
            Assert.IsFalse(Icu.IsNumeric(kChar4));
            Assert.IsFalse(Icu.IsPunct(kChar1));
            Assert.IsFalse(Icu.IsPunct(kChar2));
            Assert.IsFalse(Icu.IsPunct(kChar3));
            Assert.IsFalse(Icu.IsPunct(kChar4));
            Assert.IsFalse(Icu.IsSpace(kChar1));
            Assert.IsFalse(Icu.IsSpace(kChar2));
            Assert.IsFalse(Icu.IsSpace(kChar3));
            Assert.IsFalse(Icu.IsSpace(kChar4));
            Assert.IsFalse(Icu.IsSymbol(kChar1));
            Assert.IsFalse(Icu.IsSymbol(kChar2));
            Assert.IsFalse(Icu.IsSymbol(kChar3));
            Assert.IsFalse(Icu.IsSymbol(kChar4));

            Assert.AreEqual(Icu.UCharCategory.U_PRIVATE_USE_CHAR, Icu.GetCharType(kChar1));
            Assert.AreEqual(Icu.UCharCategory.U_PRIVATE_USE_CHAR, Icu.GetCharType(kChar2));
            Assert.AreEqual(Icu.UCharCategory.U_UNASSIGNED, Icu.GetCharType(kChar3));
            Assert.AreEqual(Icu.UCharCategory.U_UNASSIGNED, Icu.GetCharType(kChar4));
            var decompositionType = Icu.GetDecompositionType(kChar1);

            Assert.AreEqual("[none]", decompositionType.Description);
            decompositionType = Icu.GetDecompositionType(kChar2);
            Assert.AreEqual("[none]", decompositionType.Description);
            decompositionType = Icu.GetDecompositionType(kChar3);
            Assert.AreEqual("[none]", decompositionType.Description);
            decompositionType = Icu.GetDecompositionType(kChar4);
            Assert.AreEqual("[none]", decompositionType.Description);
            var numericType = Icu.GetNumericType(kChar1);

            Assert.AreEqual("[none]", numericType.Description);
            numericType = Icu.GetNumericType(kChar2);
            Assert.AreEqual("[none]", numericType.Description);
            numericType = Icu.GetNumericType(kChar3);
            Assert.AreEqual("[none]", numericType.Description);
            numericType = Icu.GetNumericType(kChar4);
            Assert.AreEqual("[none]", numericType.Description);
            var prettyName = Icu.GetPrettyICUCharName("\xE000");

            Assert.IsNull(prettyName);
            prettyName = Icu.GetPrettyICUCharName("\xE001");
            Assert.IsNull(prettyName);
            prettyName = Icu.GetPrettyICUCharName(kChar3S);
            Assert.IsNull(prettyName);
            prettyName = Icu.GetPrettyICUCharName("\xDDDDD");
            Assert.IsNull(prettyName);
        }