public void ConvertRegexWithAllOptionsBson() { Regex regex = new Regex( "/", RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture); MemoryStream ms = new MemoryStream(); BsonWriter writer = new BsonWriter(ms); JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new RegexConverter()); serializer.Serialize(writer, new RegexTestClass { Regex = regex }); string expected = "14-00-00-00-0B-52-65-67-65-78-00-2F-00-69-6D-73-75-78-00-00"; string bson = BytesToHex(ms.ToArray()); Assert.AreEqual(expected, bson); ms.Seek(0, SeekOrigin.Begin); BsonReader reader = new BsonReader(ms); serializer.Converters.Add(new RegexConverter()); RegexTestClass c = serializer.Deserialize <RegexTestClass>(reader); Assert.AreEqual("/", c.Regex.ToString()); Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline | RegexOptions.ExplicitCapture, c.Regex.Options); }
public void PrecompiledRegex_CountTest() { RegexTestClass testClass = new RegexTestClass(); Assert.Equal(4, testClass.Count(textWithMultipleMatches)); Assert.Equal(4, testClass.Count(textWithMultipleMatches)); }
public void SerializeDeserializeRegex() { Regex r1 = new Regex("(hi)", RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase); RegexTestClass c = new RegexTestClass { Regex = r1 }; MemoryStream ms = new MemoryStream(); JsonSerializer serializer = new JsonSerializer { Converters = { new BsonDataRegexConverter() } }; BsonDataWriter writer = new BsonDataWriter(ms); serializer.Serialize(writer, c); string hex = BitConverter.ToString(ms.ToArray()); Assert.AreEqual("15-00-00-00-0B-52-65-67-65-78-00-28-68-69-29-00-69-75-78-00-00", hex); JObject o = (JObject)JObject.ReadFrom(new BsonDataReader(new MemoryStream(ms.ToArray()))); StringAssert.AreEqual(@"{ ""Regex"": ""/(hi)/iux"" }", o.ToString()); }
public void PrecompiledRegex_SplitTest() { RegexTestClass testClass = new RegexTestClass(); Assert.Equal(new[] { "", "4", "success", "\n", "5", "success", "\n", "6", "success", "\n", "7", "success", "" }, testClass.Split(textWithMultipleMatches)); Assert.Equal(new[] { "", "4", "success", $"\nbsdf135success1245somethingelse{Environment.NewLine}csdf136success2245somethingnew{Environment.NewLine}dsdf137success3245somethingold" }, testClass.Split(textWithMultipleMatches, 2)); }
public void ConvertEmptyRegexJson() { Regex regex = new Regex(""); string json = JsonConvert.SerializeObject( new RegexTestClass { Regex = regex }, Formatting.Indented, new RegexConverter() ); StringAssert.AreEqual( @"{ ""Regex"": { ""Pattern"": """", ""Options"": 0 } }", json ); RegexTestClass newRegex = JsonConvert.DeserializeObject <RegexTestClass>( json, new RegexConverter() ); Assert.AreEqual("", newRegex.Regex.ToString()); Assert.AreEqual(RegexOptions.None, newRegex.Regex.Options); }
public void PrecompiledRegex_Groups() { RegexTestClass testClass = new RegexTestClass(); Assert.Equal(text, testClass.Match(text).Groups[0].Value); Assert.Equal(new int[] { 0, 1, 2 }, testClass.GetGroupNumbers()); Assert.Equal(new string[] { "0", "1", "output" }, testClass.GetGroupNames()); }
public void TestPrecompiledRegex() { string text = "asdf134success1245something"; RegexTestClass testClass = new RegexTestClass(); Assert.Equal(1, testClass.Matches(text).Count); Assert.Equal(1, testClass.Match(text).Groups[0].Captures.Count); Assert.Equal(text, testClass.Match(text).Groups[0].Value); Assert.Equal(new int[] { 0, 1, 2 }, testClass.GetGroupNumbers()); Assert.Equal(new string[] { "0", "1", "output" }, testClass.GetGroupNames()); }
public void PrecompiledRegex_ReplaceTest() { RegexTestClass testClass = new RegexTestClass(); Assert.Equal("4success", testClass.Replace(text, "$1${output}")); Assert.Equal("4success", testClass.Replace(text, (match) => { return($"{match.Groups[1]}{match.Groups["output"]}"); })); Assert.Equal("4success\n5success\n6success\n7success", testClass.Replace(textWithMultipleMatches, "$1${output}")); }
public void PrecompiledRegex_MatchTest() { RegexTestClass testClass = new RegexTestClass(); Assert.Equal(1, testClass.Match(text).Groups[0].Captures.Count); Assert.Equal(Match.Empty, testClass.Match(text, beginning: 7, length: text.Length - 7)); Assert.Equal(5, testClass.Match(text, beginning: 5, length: text.Length - 5).Index); Assert.False(testClass.Match("asdf134succes1245somethingasdf134success1245something", 0, 27).Success); // The first 27 characters shouldn't match. Assert.True(testClass.Match("asdf134succes1245somethingasdf134success1245something", 26, 27).Success); // The last 27 characters should match. Assert.Equal(Match.Empty, testClass.Match(text, startat: 7)); Assert.Equal(6, testClass.Match(text, startat: 6).Index); }
public void DeserializeFromBson() { MemoryStream ms = new MemoryStream(HexToBytes("13-00-00-00-0B-52-65-67-65-78-00-61-62-63-00-69-75-00-00")); BsonReader reader = new BsonReader(ms); JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new RegexConverter()); RegexTestClass c = serializer.Deserialize <RegexTestClass>(reader); Assert.AreEqual("abc", c.Regex.ToString()); Assert.AreEqual(RegexOptions.IgnoreCase, c.Regex.Options); }
public void DeserializeStringRegex() { string json = @"{ ""Regex"": ""\/abc\/"" }"; RegexTestClass c = JsonConvert.DeserializeObject <RegexTestClass>(json, new JsonSerializerSettings { Converters = { new RegexConverter() } }); Assert.AreEqual("abc", c.Regex.ToString()); Assert.AreEqual(RegexOptions.None, c.Regex.Options); }
public void DeserializeISerializeRegexJson() { string json = @"{ ""Regex"": { ""pattern"": ""(hi)"", ""options"": 5, ""matchTimeout"": -10000 } }"; RegexTestClass r = JsonConvert.DeserializeObject <RegexTestClass>(json); Assert.AreEqual("(hi)", r.Regex.ToString()); Assert.AreEqual(RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture, r.Regex.Options); }
public void PrecompiledRegex_MatchesTest() { string[] expectedMatches = textWithMultipleMatches.Split(Environment.NewLine); RegexTestClass testClass = new RegexTestClass(); // Test Matches overloads Assert.Equal(1, testClass.Matches(text).Count); Assert.Equal(0, testClass.Matches(text, startat: 7).Count); MatchCollection multipleMatches = testClass.Matches(textWithMultipleMatches); Assert.Equal(4, multipleMatches.Count); for (int i = 0; i < expectedMatches.Length; i++) { Assert.Equal(expectedMatches[i], multipleMatches[i].Value.Trim()); // Calling Trim since the match will contain the new line as part of the match. } }
public void ConvertEmptyRegexBson() { Regex regex = new Regex(string.Empty); MemoryStream ms = new MemoryStream(); BsonWriter writer = new BsonWriter(ms); JsonSerializer serializer = new JsonSerializer(); serializer.Converters.Add(new RegexConverter()); serializer.Serialize(writer, new RegexTestClass { Regex = regex }); ms.Seek(0, SeekOrigin.Begin); BsonReader reader = new BsonReader(ms); serializer.Converters.Add(new RegexConverter()); RegexTestClass c = serializer.Deserialize <RegexTestClass>(reader); Assert.AreEqual("", c.Regex.ToString()); Assert.AreEqual(RegexOptions.None, c.Regex.Options); }
public void SerializeDeserializeRegex() { Regex r1 = new Regex("(hi)", RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase); RegexTestClass c = new RegexTestClass { Regex = r1 }; MemoryStream ms = new MemoryStream(); JsonSerializer serializer = new JsonSerializer(); BsonWriter writer = new BsonWriter(ms); serializer.Serialize(writer, c); string hex = BitConverter.ToString(ms.ToArray()); Assert.AreEqual("15-00-00-00-0B-52-65-67-65-78-00-28-68-69-29-00-69-75-78-00-00", hex); JObject o = (JObject)JObject.ReadFrom(new BsonReader(new MemoryStream(ms.ToArray()))); StringAssert.AreEqual(@"{ ""Regex"": ""/(hi)/iux"" }", o.ToString()); }
public void PrecompiledRegex_ThrowsWhenSpanIsMatchIsCalled() { RegexTestClass testClass = new RegexTestClass(); Assert.Throws <NotSupportedException>(() => testClass.IsMatch(text.AsSpan())); }