Exemple #1
0
        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));
        }
Exemple #3
0
        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));
        }
Exemple #5
0
        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());
        }
Exemple #7
0
        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);
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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);
        }
Exemple #12
0
        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.
            }
        }
Exemple #14
0
        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()));
        }