Пример #1
0
        public void TestCategory()
        {
            Assert.AreEqual(Arabic.NegateCategory().Expression, NonArabic.Expression);
            Assert.AreEqual(NonBasicLatin.NegateCategory().Expression, BasicLatin.Expression);
            Assert.AreEqual(BasicLatin.Intersect(NonLowercaseLetter).Expression, @"(?=\p{IsBasicLatin})\P{Ll}");
            Assert.AreEqual(BasicLatin.UnionAndIntersect(Arabic, NonLowercaseLetter).Expression, @"(?=\p{IsBasicLatin}|\p{IsArabic})\P{Ll}");
            var x = BasicLatin - LowercaseLetter;

            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}-[\p{Ll}]]");
            Assert.AreEqual((MathSymbol - x).Expression, @"[\p{Sm}-[\p{IsBasicLatin}-[\p{Ll}]]]");
            Assert.AreEqual((x - ('H', 'K')).Expression, @"[\p{IsBasicLatin}-[\p{Ll}H-K]]");
            Assert.AreEqual((x - 'H').Expression, @"[\p{IsBasicLatin}-[\p{Ll}H]]");
            x = BasicLatin - (LowercaseLetter - 'a');
            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}-[\p{Ll}-[a]]]");
            x = (BasicLatin - LowercaseLetter) - 'a';
            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}-[\p{Ll}a]]");

            x = BasicLatin & LowercaseLetter;
            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}\p{Ll}]");
            Assert.AreEqual((MathSymbol & x).Expression, @"[\p{Sm}\p{IsBasicLatin}\p{Ll}]");
            Assert.AreEqual((BasicLatin & ('H', 'K')).Expression, @"[\p{IsBasicLatin}H-K]");
            Assert.AreEqual((Arabic & 'H').Expression, @"[\p{IsArabic}H]");
            x = BasicLatin & (LowercaseLetter - 'a');
            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}\p{Ll}-[a]]");
            x = (BasicLatin & LowercaseLetter) - 'a';
            Assert.AreEqual(x.Expression, @"[\p{IsBasicLatin}\p{Ll}-[a]]");
            Assert.AreEqual((Arabic & new CharClassPattern(false, 'b')).Expression, @"[\p{IsArabic}b]");
            Assert.AreEqual((Arabic & ('a', 'z')).Expression, @"[\p{IsArabic}a-z]");

            var p = BasicLatin + LowercaseLetter;

            Assert.AreEqual(p.Expression, @"\p{IsBasicLatin}\p{Ll}");
            Assert.AreEqual((MathSymbol + p).Expression, @"\p{Sm}\p{IsBasicLatin}\p{Ll}");
            p = BasicLatin + (LowercaseLetter - 'a');
            Assert.AreEqual(p.Expression, @"\p{IsBasicLatin}[\p{Ll}-[a]]");
            Assert.AreEqual((Arabic + new CharClassPattern(false, 'b')).Expression, @"\p{IsArabic}[b]");
            Assert.AreEqual((Arabic + ('a', 'z')).Expression, @"\p{IsArabic}[a-z]");
        }
Пример #2
0
 public void TestNegativeCategories()
 {
     Assert.AreEqual(NonUppercaseLetter.ToString(), NegativeUnicodeCategory(Categories.UppercaseLetter).ToString());
     Assert.AreEqual(NonLowercaseLetter.ToString(), NegativeUnicodeCategory(Categories.LowercaseLetter).ToString());
     Assert.AreEqual(NonTitlecaseLetter.ToString(), NegativeUnicodeCategory(Categories.TitlecaseLetter).ToString());
     Assert.AreEqual(NonModifierLetter.ToString(), NegativeUnicodeCategory(Categories.ModifierLetter).ToString());
     Assert.AreEqual(NonOtherLetter.ToString(), NegativeUnicodeCategory(Categories.OtherLetter).ToString());
     Assert.AreEqual(NonLetter.ToString(), NegativeUnicodeCategory(Categories.Letter).ToString());
     Assert.AreEqual(SpacingMark.ToString(), NegativeUnicodeCategory(Categories.NonspacingMark).ToString());
     Assert.AreEqual(NonSpacingCombiningMark.ToString(), NegativeUnicodeCategory(Categories.SpacingCombiningMark).ToString());
     Assert.AreEqual(NonEnclosingMark.ToString(), NegativeUnicodeCategory(Categories.EnclosingMark).ToString());
     Assert.AreEqual(NonMark.ToString(), NegativeUnicodeCategory(Categories.Mark).ToString());
     Assert.AreEqual(NonDecimalDigitNumber.ToString(), NegativeUnicodeCategory(Categories.DecimalDigitNumber).ToString());
     Assert.AreEqual(NonLetterNumber.ToString(), NegativeUnicodeCategory(Categories.LetterNumber).ToString());
     Assert.AreEqual(NonOtherNumber.ToString(), NegativeUnicodeCategory(Categories.OtherNumber).ToString());
     Assert.AreEqual(NonNumber.ToString(), NegativeUnicodeCategory(Categories.Number).ToString());
     Assert.AreEqual(NonConnectorPunctuation.ToString(), NegativeUnicodeCategory(Categories.ConnectorPunctuation).ToString());
     Assert.AreEqual(NonDashPunctuation.ToString(), NegativeUnicodeCategory(Categories.DashPunctuation).ToString());
     Assert.AreEqual(NonOpenPunctuation.ToString(), NegativeUnicodeCategory(Categories.OpenPunctuation).ToString());
     Assert.AreEqual(NonClosePunctuation.ToString(), NegativeUnicodeCategory(Categories.ClosePunctuation).ToString());
     Assert.AreEqual(NonInitialquotePunctuation.ToString(), NegativeUnicodeCategory(Categories.InitialquotePunctuation).ToString());
     Assert.AreEqual(NonFinalquotePunctuation.ToString(), NegativeUnicodeCategory(Categories.FinalquotePunctuation).ToString());
     Assert.AreEqual(NonOtherPunctuation.ToString(), NegativeUnicodeCategory(Categories.OtherPunctuation).ToString());
     Assert.AreEqual(NonPunctuation.ToString(), NegativeUnicodeCategory(Categories.Punctuation).ToString());
     Assert.AreEqual(NonMathSymbol.ToString(), NegativeUnicodeCategory(Categories.MathSymbol).ToString());
     Assert.AreEqual(NonCurrencySymbol.ToString(), NegativeUnicodeCategory(Categories.CurrencySymbol).ToString());
     Assert.AreEqual(NonModifierSymbol.ToString(), NegativeUnicodeCategory(Categories.ModifierSymbol).ToString());
     Assert.AreEqual(NonOtherSymbol.ToString(), NegativeUnicodeCategory(Categories.OtherSymbol).ToString());
     Assert.AreEqual(NonSymbol.ToString(), NegativeUnicodeCategory(Categories.Symbol).ToString());
     Assert.AreEqual(NonSpaceSeparator.ToString(), NegativeUnicodeCategory(Categories.SpaceSeparator).ToString());
     Assert.AreEqual(NonLineSeparator.ToString(), NegativeUnicodeCategory(Categories.LineSeparator).ToString());
     Assert.AreEqual(NonParagraphSeparator.ToString(), NegativeUnicodeCategory(Categories.ParagraphSeparator).ToString());
     Assert.AreEqual(NonSeparator.ToString(), NegativeUnicodeCategory(Categories.Separator).ToString());
     Assert.AreEqual(NonFormat.ToString(), NegativeUnicodeCategory(Categories.Format).ToString());
     Assert.AreEqual(NonSurrogate.ToString(), NegativeUnicodeCategory(Categories.Surrogate).ToString());
     Assert.AreEqual(NonPrivateUse.ToString(), NegativeUnicodeCategory(Categories.PrivateUse).ToString());
     Assert.AreEqual(Assigned.ToString(), NegativeUnicodeCategory(Categories.NotAssigned).ToString());
     Assert.AreEqual(NonOtherControl.ToString(), NegativeUnicodeCategory(Categories.OtherControl).ToString());
     Assert.AreEqual(NonControl.ToString(), NegativeUnicodeCategory(Categories.Control).ToString());
     Assert.AreEqual(NonBasicLatin.ToString(), NegativeUnicodeCategory(Categories.BasicLatin).ToString());
     Assert.AreEqual(NonLatin_1Supplement.ToString(), NegativeUnicodeCategory(Categories.Latin_1Supplement).ToString());
     Assert.AreEqual(NonLatinExtended_A.ToString(), NegativeUnicodeCategory(Categories.LatinExtended_A).ToString());
     Assert.AreEqual(NonLatinExtended_B.ToString(), NegativeUnicodeCategory(Categories.LatinExtended_B).ToString());
     Assert.AreEqual(NonIPAExtensions.ToString(), NegativeUnicodeCategory(Categories.IPAExtensions).ToString());
     Assert.AreEqual(NonSpacingModifierLetters.ToString(), NegativeUnicodeCategory(Categories.SpacingModifierLetters).ToString());
     Assert.AreEqual(NonCombiningDiacriticalMarks.ToString(), NegativeUnicodeCategory(Categories.CombiningDiacriticalMarks).ToString());
     Assert.AreEqual(NonGreek.ToString(), NegativeUnicodeCategory(Categories.Greek).ToString());
     Assert.AreEqual(NonGreekandCoptic.ToString(), NegativeUnicodeCategory(Categories.GreekandCoptic).ToString());
     Assert.AreEqual(NonCyrillic.ToString(), NegativeUnicodeCategory(Categories.Cyrillic).ToString());
     Assert.AreEqual(NonCyrillicSupplement.ToString(), NegativeUnicodeCategory(Categories.CyrillicSupplement).ToString());
     Assert.AreEqual(NonArmenian.ToString(), NegativeUnicodeCategory(Categories.Armenian).ToString());
     Assert.AreEqual(NonHebrew.ToString(), NegativeUnicodeCategory(Categories.Hebrew).ToString());
     Assert.AreEqual(NonArabic.ToString(), NegativeUnicodeCategory(Categories.Arabic).ToString());
     Assert.AreEqual(NonSyriac.ToString(), NegativeUnicodeCategory(Categories.Syriac).ToString());
     Assert.AreEqual(NonThaana.ToString(), NegativeUnicodeCategory(Categories.Thaana).ToString());
     Assert.AreEqual(NonDevanagari.ToString(), NegativeUnicodeCategory(Categories.Devanagari).ToString());
     Assert.AreEqual(NonBengali.ToString(), NegativeUnicodeCategory(Categories.Bengali).ToString());
     Assert.AreEqual(NonGurmukhi.ToString(), NegativeUnicodeCategory(Categories.Gurmukhi).ToString());
     Assert.AreEqual(NonGujarati.ToString(), NegativeUnicodeCategory(Categories.Gujarati).ToString());
     Assert.AreEqual(NonOriya.ToString(), NegativeUnicodeCategory(Categories.Oriya).ToString());
     Assert.AreEqual(NonTamil.ToString(), NegativeUnicodeCategory(Categories.Tamil).ToString());
     Assert.AreEqual(NonTelugu.ToString(), NegativeUnicodeCategory(Categories.Telugu).ToString());
     Assert.AreEqual(NonKannada.ToString(), NegativeUnicodeCategory(Categories.Kannada).ToString());
     Assert.AreEqual(NonMalayalam.ToString(), NegativeUnicodeCategory(Categories.Malayalam).ToString());
     Assert.AreEqual(NonSinhala.ToString(), NegativeUnicodeCategory(Categories.Sinhala).ToString());
     Assert.AreEqual(NonThai.ToString(), NegativeUnicodeCategory(Categories.Thai).ToString());
     Assert.AreEqual(NonLao.ToString(), NegativeUnicodeCategory(Categories.Lao).ToString());
     Assert.AreEqual(NonTibetan.ToString(), NegativeUnicodeCategory(Categories.Tibetan).ToString());
     Assert.AreEqual(NonMyanmar.ToString(), NegativeUnicodeCategory(Categories.Myanmar).ToString());
     Assert.AreEqual(NonGeorgian.ToString(), NegativeUnicodeCategory(Categories.Georgian).ToString());
     Assert.AreEqual(NonHangulJamo.ToString(), NegativeUnicodeCategory(Categories.HangulJamo).ToString());
     Assert.AreEqual(NonEthiopic.ToString(), NegativeUnicodeCategory(Categories.Ethiopic).ToString());
     Assert.AreEqual(NonCherokee.ToString(), NegativeUnicodeCategory(Categories.Cherokee).ToString());
     Assert.AreEqual(NonUnifiedCanadianAboriginalSyllabics.ToString(), NegativeUnicodeCategory(Categories.UnifiedCanadianAboriginalSyllabics).ToString());
     Assert.AreEqual(NonOgham.ToString(), NegativeUnicodeCategory(Categories.Ogham).ToString());
     Assert.AreEqual(NonRunic.ToString(), NegativeUnicodeCategory(Categories.Runic).ToString());
     Assert.AreEqual(NonTagalog.ToString(), NegativeUnicodeCategory(Categories.Tagalog).ToString());
     Assert.AreEqual(NonHanunoo.ToString(), NegativeUnicodeCategory(Categories.Hanunoo).ToString());
     Assert.AreEqual(NonBuhid.ToString(), NegativeUnicodeCategory(Categories.Buhid).ToString());
     Assert.AreEqual(NonTagbanwa.ToString(), NegativeUnicodeCategory(Categories.Tagbanwa).ToString());
     Assert.AreEqual(NonKhmer.ToString(), NegativeUnicodeCategory(Categories.Khmer).ToString());
     Assert.AreEqual(NonMongolian.ToString(), NegativeUnicodeCategory(Categories.Mongolian).ToString());
     Assert.AreEqual(NonLimbu.ToString(), NegativeUnicodeCategory(Categories.Limbu).ToString());
     Assert.AreEqual(NonTaiLe.ToString(), NegativeUnicodeCategory(Categories.TaiLe).ToString());
     Assert.AreEqual(NonKhmerSymbols.ToString(), NegativeUnicodeCategory(Categories.KhmerSymbols).ToString());
     Assert.AreEqual(NonPhoneticExtensions.ToString(), NegativeUnicodeCategory(Categories.PhoneticExtensions).ToString());
     Assert.AreEqual(NonLatinExtendedAdditional.ToString(), NegativeUnicodeCategory(Categories.LatinExtendedAdditional).ToString());
     Assert.AreEqual(NonGreekExtended.ToString(), NegativeUnicodeCategory(Categories.GreekExtended).ToString());
     Assert.AreEqual(NonGeneralPunctuation.ToString(), NegativeUnicodeCategory(Categories.GeneralPunctuation).ToString());
     Assert.AreEqual(NonSuperscriptsandSubscripts.ToString(), NegativeUnicodeCategory(Categories.SuperscriptsandSubscripts).ToString());
     Assert.AreEqual(NonCurrencySymbols.ToString(), NegativeUnicodeCategory(Categories.CurrencySymbols).ToString());
     Assert.AreEqual(NonCombiningDiacriticalMarksforSymbols.ToString(), NegativeUnicodeCategory(Categories.CombiningDiacriticalMarksforSymbols).ToString());
     Assert.AreEqual(NonCombiningMarksforSymbols.ToString(), NegativeUnicodeCategory(Categories.CombiningMarksforSymbols).ToString());
     Assert.AreEqual(NonLetterlikeSymbols.ToString(), NegativeUnicodeCategory(Categories.LetterlikeSymbols).ToString());
     Assert.AreEqual(NonNumberForms.ToString(), NegativeUnicodeCategory(Categories.NumberForms).ToString());
     Assert.AreEqual(NonArrows.ToString(), NegativeUnicodeCategory(Categories.Arrows).ToString());
     Assert.AreEqual(NonMathematicalOperators.ToString(), NegativeUnicodeCategory(Categories.MathematicalOperators).ToString());
     Assert.AreEqual(NonMiscellaneousTechnical.ToString(), NegativeUnicodeCategory(Categories.MiscellaneousTechnical).ToString());
     Assert.AreEqual(NonControlPictures.ToString(), NegativeUnicodeCategory(Categories.ControlPictures).ToString());
     Assert.AreEqual(NonOpticalCharacterRecognition.ToString(), NegativeUnicodeCategory(Categories.OpticalCharacterRecognition).ToString());
     Assert.AreEqual(NonEnclosedAlphanumerics.ToString(), NegativeUnicodeCategory(Categories.EnclosedAlphanumerics).ToString());
     Assert.AreEqual(NonBoxDrawing.ToString(), NegativeUnicodeCategory(Categories.BoxDrawing).ToString());
     Assert.AreEqual(NonBlockElements.ToString(), NegativeUnicodeCategory(Categories.BlockElements).ToString());
     Assert.AreEqual(NonGeometricShapes.ToString(), NegativeUnicodeCategory(Categories.GeometricShapes).ToString());
     Assert.AreEqual(NonMiscellaneousSymbols.ToString(), NegativeUnicodeCategory(Categories.MiscellaneousSymbols).ToString());
     Assert.AreEqual(NonDingbats.ToString(), NegativeUnicodeCategory(Categories.Dingbats).ToString());
     Assert.AreEqual(NonMiscellaneousMathematicalSymbols_A.ToString(), NegativeUnicodeCategory(Categories.MiscellaneousMathematicalSymbols_A).ToString());
     Assert.AreEqual(NonSupplementalArrows_A.ToString(), NegativeUnicodeCategory(Categories.SupplementalArrows_A).ToString());
     Assert.AreEqual(NonBraillePatterns.ToString(), NegativeUnicodeCategory(Categories.BraillePatterns).ToString());
     Assert.AreEqual(NonSupplementalArrows_B.ToString(), NegativeUnicodeCategory(Categories.SupplementalArrows_B).ToString());
     Assert.AreEqual(NonMiscellaneousMathematicalSymbols_B.ToString(), NegativeUnicodeCategory(Categories.MiscellaneousMathematicalSymbols_B).ToString());
     Assert.AreEqual(NonSupplementalMathematicalOperators.ToString(), NegativeUnicodeCategory(Categories.SupplementalMathematicalOperators).ToString());
     Assert.AreEqual(NonMiscellaneousSymbolsandArrows.ToString(), NegativeUnicodeCategory(Categories.MiscellaneousSymbolsandArrows).ToString());
     Assert.AreEqual(NonCJKRadicalsSupplement.ToString(), NegativeUnicodeCategory(Categories.CJKRadicalsSupplement).ToString());
     Assert.AreEqual(NonKangxiRadicals.ToString(), NegativeUnicodeCategory(Categories.KangxiRadicals).ToString());
     Assert.AreEqual(NonIdeographicDescriptionCharacters.ToString(), NegativeUnicodeCategory(Categories.IdeographicDescriptionCharacters).ToString());
     Assert.AreEqual(NonCJKSymbolsandPunctuation.ToString(), NegativeUnicodeCategory(Categories.CJKSymbolsandPunctuation).ToString());
     Assert.AreEqual(NonHiragana.ToString(), NegativeUnicodeCategory(Categories.Hiragana).ToString());
     Assert.AreEqual(NonKatakana.ToString(), NegativeUnicodeCategory(Categories.Katakana).ToString());
     Assert.AreEqual(NonBopomofo.ToString(), NegativeUnicodeCategory(Categories.Bopomofo).ToString());
     Assert.AreEqual(NonHangulCompatibilityJamo.ToString(), NegativeUnicodeCategory(Categories.HangulCompatibilityJamo).ToString());
     Assert.AreEqual(NonKanbun.ToString(), NegativeUnicodeCategory(Categories.Kanbun).ToString());
     Assert.AreEqual(NonBopomofoExtended.ToString(), NegativeUnicodeCategory(Categories.BopomofoExtended).ToString());
     Assert.AreEqual(NonKatakanaPhoneticExtensions.ToString(), NegativeUnicodeCategory(Categories.KatakanaPhoneticExtensions).ToString());
     Assert.AreEqual(NonEnclosedCJKLettersandMonths.ToString(), NegativeUnicodeCategory(Categories.EnclosedCJKLettersandMonths).ToString());
     Assert.AreEqual(NonCJKCompatibility.ToString(), NegativeUnicodeCategory(Categories.CJKCompatibility).ToString());
     Assert.AreEqual(NonCJKUnifiedIdeographsExtensionA.ToString(), NegativeUnicodeCategory(Categories.CJKUnifiedIdeographsExtensionA).ToString());
     Assert.AreEqual(NonYijingHexagramSymbols.ToString(), NegativeUnicodeCategory(Categories.YijingHexagramSymbols).ToString());
     Assert.AreEqual(NonCJKUnifiedIdeographs.ToString(), NegativeUnicodeCategory(Categories.CJKUnifiedIdeographs).ToString());
     Assert.AreEqual(NonYiSyllables.ToString(), NegativeUnicodeCategory(Categories.YiSyllables).ToString());
     Assert.AreEqual(NonYiRadicals.ToString(), NegativeUnicodeCategory(Categories.YiRadicals).ToString());
     Assert.AreEqual(NonHangulSyllables.ToString(), NegativeUnicodeCategory(Categories.HangulSyllables).ToString());
     Assert.AreEqual(NonHighSurrogates.ToString(), NegativeUnicodeCategory(Categories.HighSurrogates).ToString());
     Assert.AreEqual(NonHighPrivateUseSurrogates.ToString(), NegativeUnicodeCategory(Categories.HighPrivateUseSurrogates).ToString());
     Assert.AreEqual(NonLowSurrogates.ToString(), NegativeUnicodeCategory(Categories.LowSurrogates).ToString());
     Assert.AreEqual(NonPrivateUseArea.ToString(), NegativeUnicodeCategory(Categories.PrivateUseArea).ToString());
     Assert.AreEqual(NonCJKCompatibilityIdeographs.ToString(), NegativeUnicodeCategory(Categories.CJKCompatibilityIdeographs).ToString());
     Assert.AreEqual(NonLettericPresentationForms.ToString(), NegativeUnicodeCategory(Categories.LettericPresentationForms).ToString());
     Assert.AreEqual(NonArabicPresentationForms_A.ToString(), NegativeUnicodeCategory(Categories.ArabicPresentationForms_A).ToString());
     Assert.AreEqual(NonVariationSelectors.ToString(), NegativeUnicodeCategory(Categories.VariationSelectors).ToString());
     Assert.AreEqual(NonCombiningHalfMarks.ToString(), NegativeUnicodeCategory(Categories.CombiningHalfMarks).ToString());
     Assert.AreEqual(NonCJKCompatibilityForms.ToString(), NegativeUnicodeCategory(Categories.CJKCompatibilityForms).ToString());
     Assert.AreEqual(NonSmallFormVariants.ToString(), NegativeUnicodeCategory(Categories.SmallFormVariants).ToString());
     Assert.AreEqual(NonArabicPresentationForms_B.ToString(), NegativeUnicodeCategory(Categories.ArabicPresentationForms_B).ToString());
     Assert.AreEqual(NonHalfwidthandFullwidthForms.ToString(), NegativeUnicodeCategory(Categories.HalfwidthandFullwidthForms).ToString());
     Assert.AreEqual(NonSpecials.ToString(), NegativeUnicodeCategory(Categories.Specials).ToString());
 }