Comment 4 for bug 697919

Revision history for this message
Charlie Poole (charlie.poole) wrote : Re: [Bug 697919] Re: Exception in -Is.StringMatching(string)- method

Hi Roberto,

That surprises me as well. I guess .NET is able to handle the unescaped right
parenthesis in the passing case. NUnit's RegexConstraint does no processing
of the string but just passes it on to Regex.IsMatch.

Charlie

On Wed, Jan 5, 2011 at 5:59 PM, Roberto Carrillo
<email address hidden> wrote:
> I don't understand. I ran the "TestThatPasses()" method (below) and it passes.
> It is the exactly same regular expression. Am I doing something wrong?
>
>        [Test]
>        public void Test_NUnitBug()
>        {
>            const string ExpectedString = "NUnit is :) happy!";
>            Encoding encoding = Encoding.Unicode;
>            byte[] bytes = encoding.GetBytes(ExpectedString);
>            string actualString = encoding.GetString(bytes);
>
>            Console.WriteLine(actualString);
>            Console.WriteLine(ExpectedString);
>            Console.WriteLine(actualString.Length);
>            Console.WriteLine(ExpectedString.Length);
>            Assert.That(actualString, Is.StringMatching(ExpectedString));
>        }
>
>
>        [Test]
>        public void TestThatPasses()
>        {
>            const string ExpectedString = "NUnit is :) happy!";
>            Console.WriteLine(ExpectedString);
>            Console.WriteLine(ExpectedString.Length);
>            Assert.That(ExpectedString, Is.StringMatching(ExpectedString));
>        }
>
> -Roberto
>
>
> ----- Mensaje original ----
> De: Charlie Poole <email address hidden>
> Para: <email address hidden>
> Enviado: miércoles, 5 de enero, 2011 19:38:48
> Asunto: [Bug 697919] Re: Exception in -Is.StringMatching(string)- method
>
> Is.StringMatching() takes a string argument, which is to be used as a
> regular expression. Hence, it must be a valid regular expression. You
> should either use Is.EqualTo() or escape the ')' like this: @"NUnit is
> :\) happy!"
>
> --
> You received this bug notification because you are a direct subscriber
> of the bug.
> https://bugs.launchpad.net/bugs/697919
>
> Title:
>  Exception in -Is.StringMatching(string)- method
>
> Status in NUnit Test Framework:
>  New
>
> Bug description:
>  This is my code:
>
>        [Test]
>        public void Test_NUnitBug()
>        {
>            const string ExpectedString = "NUnit is :) happy!";
>            Encoding encoding = Encoding.Unicode;
>            byte[] bytes = encoding.GetBytes(ExpectedString);
>            string actualString = encoding.GetString(bytes);
>
>            Console.WriteLine(actualString);
>            Console.WriteLine(ExpectedString);
>            Console.WriteLine(actualString.Length);
>            Console.WriteLine(ExpectedString.Length);
>            Assert.That(actualString, Is.StringMatching(ExpectedString));
>        }
>
> This is the exception:
>
> NUnit is :) happy!
> NUnit is :) happy!
> 18
> 18
>
> System.ArgumentException : parsing "NUnit is :) happy!" - Too many )'s.
> at System.Text.RegularExpressions.RegexParser.ScanRegex()
> at System.Text.RegularExpressions.RegexParser.Parse(String re, RegexOptions op)
> at System.Text.RegularExpressions.Regex..ctor(String pattern, RegexOptions
> options, Boolean useCache)
> at System.Text.RegularExpressions.Regex.IsMatch(String input, String pattern,
> RegexOptions options)
> at NUnit.Framework.Constraints.RegexConstraint.Matches(Object actual)
> at NUnit.Framework.Assert.That(Object actual, IResolveConstraint expression,
> String message, Object[] args)
> at MyCopy.Test_NUnitBug() in MyTest.cs: line 48
>
>
> ------
> I ran NUnit using the console and ReSharper.
>
> To unsubscribe from this bug, go to:
> https://bugs.launchpad.net/nunit-3.0/+bug/697919/+subscribe
>
> --
> You received this bug notification because you are subscribed to NUnit
> Framework.
> https://bugs.launchpad.net/bugs/697919
>
> Title:
>  Exception in -Is.StringMatching(string)- method
>