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]"); }
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()); }