コード例 #1
0
 public void IsSymbol()
 {
     Assert.IsFalse(Icu.IsSymbol('#'));
     Assert.IsFalse(Icu.IsSymbol('a'));
     Assert.IsTrue(Icu.IsSymbol('$'));
     Assert.IsTrue(Icu.IsSymbol('+'));
     Assert.IsTrue(Icu.IsSymbol('`'));
     Assert.IsTrue(Icu.IsSymbol(0x0385));
     Assert.IsTrue(Icu.IsSymbol(0x0B70));
 }
コード例 #2
0
        /// ------------------------------------------------------------------------------------
        /// <summary>
        /// Determines whether the specified character is not a word-forming character
        /// according to ICU, but should be allowed to be a word-forming override.
        /// </summary>
        /// <param name="chr">The character to test</param>
        /// <returns><c>true</c> if the specified character is able to be overridden to be
        /// word-forming (i.e., is a punctuation or symbol character according to ICU or is one
        /// of the special exceptions);
        /// <c>false</c> otherwise</returns>
        /// ------------------------------------------------------------------------------------
        public bool CanBeWordFormingOverride(string chr)
        {
            if (string.IsNullOrEmpty(chr) || chr.Length > 1)
            {
                return(false);
            }

            int code = chr[0];

            if (code == 0x200C || code == 0x200D)
            {
                return(true);                // Zero-width non-joiner or zero-width joiner
            }
            if (Icu.IsSymbol(code))
            {
                return(true);                // symbol
            }
            if (Icu.IsPunct(code))
            {
                return(true);                // punctuation
            }
            return(false);
        }
コード例 #3
0
        private static void VerifyNewlyCreatedChars()
        {
            Icu.InitIcuDataDir();

            // The commented out methods below use u_getIntPropertyValue(), which doesn't
            // work reliably with the limited number of data files that we modify.
            //Assert.IsTrue(Icu.IsAlphabetic(kChar1));	// now true
            //Assert.IsTrue(Icu.IsAlphabetic(kChar2));	// now true
            //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.IsTrue(Icu.IsNumeric(kChar4));		// now true
            Assert.IsFalse(Icu.IsPunct(kChar1));
            Assert.IsFalse(Icu.IsPunct(kChar2));
            Assert.IsTrue(Icu.IsPunct(kChar3));                                 // now true
            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));

            var cat = Icu.GetCharType(kChar1);

            Assert.AreEqual(Icu.UCharCategory.U_LOWERCASE_LETTER, cat);
            cat = Icu.GetCharType(kChar2);
            Assert.AreEqual(Icu.UCharCategory.U_UPPERCASE_LETTER, cat);
            cat = Icu.GetCharType(kChar3);
            Assert.AreEqual(Icu.UCharCategory.U_OTHER_PUNCTUATION, cat);
            cat = Icu.GetCharType(kChar4);
            Assert.AreEqual(Icu.UCharCategory.U_DECIMAL_DIGIT_NUMBER, cat);
            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);

            // Current implementation (as of ICU50) is not overriding numeric type since we don't use it anywhere.
            // Enhance silmods.c in icu patch if needed.
            //numericType = Icu.GetNumericType(kChar4);
            //Assert.AreEqual("Decimal Digit", numericType.Description);

            // Current implementation (as of ICU50) is not overriding character names since we don't use them anywhere.
            // Enhance silmods.c in icu patch if needed.
            //var prettyName = Icu.GetPrettyICUCharName("\xE000");
            //Assert.AreEqual("My Special Character", prettyName);
            //prettyName = Icu.GetPrettyICUCharName("\xE001");
            //Assert.AreEqual("My Uppercase Character", prettyName);
            //prettyName = Icu.GetPrettyICUCharName(kChar3S);
            //Assert.AreEqual("New Punctuation Mark", prettyName);
            //var rawName = Icu.GetCharName(kChar4);	// can't pass large character code as 16-bit char.
            //Assert.AreEqual("NEW DIGIT NINE", rawName);
        }
コード例 #4
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);
        }