public void TestCategoryAsciiUnion()
 {
     ParserCharSet upper = ParserCharSet.FromUnicodeCategory("Lu");
     ParserCharSet digit = new ParserCharSet('0', '1', '2');
     ParserCharSet upperLetterOrDigit = upper + digit;
     Assert.IsTrue(upperLetterOrDigit.Contains('A'), "'A' must be in set");
     Assert.IsTrue(upperLetterOrDigit.Contains('Z'), "'Z' must be in set");
     Assert.IsTrue(upperLetterOrDigit.Contains('\u0410'), "'\u0410' must be in set"); // Cyrillic A
     Assert.IsTrue(upperLetterOrDigit.Contains('1'), "'1' must be in set");
     Assert.IsFalse(upperLetterOrDigit.Contains('5'), "'5' must not be in set");
     Assert.IsFalse(upperLetterOrDigit.Contains('c'), "'c' must not be in set");
     Assert.IsFalse(upperLetterOrDigit.Contains('\u044F'), "'\u043F' must not be in set"); // Cyrillic ya
 }
 public void TestNegation()
 {
     ParserCharSet ws = new ParserCharSet(' ', '\r', '\n', '\t');
     ParserCharSet notWS = ParserCharSet.AnyChar - ws;
     Assert.IsFalse(notWS.Contains(' '), "' ' must not be in set");
     Assert.IsFalse(notWS.Contains('\t'), "'\\t' must not be in set");
     Assert.IsFalse(notWS.Contains('\n'), "'\\n' must not be in set");
     Assert.IsFalse(notWS.Contains('\r'), "'\\r' must not be in set");
     Assert.IsTrue(notWS.Contains('a'), "'a' must be in set");
 }
 public void TestRangeSubtraction()
 {
     ParserCharSet upperBasicRussian = ParserCharSet.FromRange('\u0410', '\u042F');
     // set of russian upper case vowels               A         E         I          O         U       YERU       E         YU        YA
     ParserCharSet upperRussianVowels = new ParserCharSet('\u0410', '\u0415', '\u0418', '\u041E', '\u0423', '\u042B', '\u042D', '\u042E', '\u042F');
     ParserCharSet upperRussianConsonats = upperBasicRussian - upperRussianVowels;
     Assert.IsFalse(upperRussianConsonats.Contains('\u0410'), "'\u0410' must not be in set"); // Cyrillic Capital Letter A
     Assert.IsTrue(upperRussianConsonats.Contains('\u0411'), "'\u0411' must be in set"); // Cyrillic Capital Letter BE
     Assert.IsTrue(upperRussianConsonats.Contains('\u041A'), "'\u041A' must be in set"); // Cyrillic Capital Letter KA
     Assert.IsFalse(upperRussianConsonats.Contains('\u042F'), "'\u042F' must not be in set"); // Cyrillic Capital Letter YA
     Assert.IsFalse(upperRussianConsonats.Contains('\u041E'), "'\u041E' must not be in set"); // Cyrillic Capital Letter O
     Assert.IsFalse(upperRussianConsonats.Contains('\u0430'), "'\u0430' must not be in set"); // Cyrillic Small Letter a
     Assert.IsFalse(upperRussianConsonats.Contains('\u044E'), "'\u044e' must not be in set"); // Cyrillic Small Letter yu
     Assert.IsFalse(upperRussianConsonats.Contains('A'), "'A' must not be in set");
     Assert.IsFalse(upperRussianConsonats.Contains('z'), "'z' must not be in set");
 }
 public void TestContains()
 {
     ParserCharSet ws = new ParserCharSet(' ', '\r', '\n', '\t');
     Assert.IsTrue(ws.Contains(' '), "' ' must be in set");
     Assert.IsTrue(ws.Contains('\t'), "'\\t' must be in set");
     Assert.IsTrue(ws.Contains('\n'), "'\\n' must be in set");
     Assert.IsTrue(ws.Contains('\r'), "'\\r' must be in set");
     Assert.IsFalse(ws.Contains('a'), "'a' must not be in set");
 }