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
>
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 GetBytes( ExpectedString) ; GetString( bytes); WriteLine( actualString) ; WriteLine( ExpectedString) ; WriteLine( actualString. Length) ; WriteLine( ExpectedString. Length) ; That(actualStri ng, Is.StringMatchi ng(ExpectedStri ng)); WriteLine( ExpectedString) ; WriteLine( ExpectedString. Length) ; That(ExpectedSt ring, Is.StringMatchi ng(ExpectedStri ng)); ing(string) - method /bugs.launchpad .net/bugs/ 697919 ing(string) - method GetBytes( ExpectedString) ; GetString( bytes); WriteLine( actualString) ; WriteLine( ExpectedString) ; WriteLine( actualString. Length) ; WriteLine( ExpectedString. Length) ; That(actualStri ng, Is.StringMatchi ng(ExpectedStri ng)); ArgumentExcepti on : parsing "NUnit is :) happy!" - Too many )'s. Text.RegularExp ressions. RegexParser. ScanRegex( ) Text.RegularExp ressions. RegexParser. Parse(String re, RegexOptions op) Text.RegularExp ressions. Regex.. ctor(String pattern, RegexOptions Text.RegularExp ressions. Regex.IsMatch( String input, String pattern, .Constraints. RegexConstraint .Matches( Object actual) .Assert. That(Object actual, IResolveConstraint expression, Test_NUnitBug( ) in MyTest.cs: line 48 /bugs.launchpad .net/nunit- 3.0/+bug/ 697919/ +subscribe /bugs.launchpad .net/bugs/ 697919 ing(string) - method
<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.
> string actualString = encoding.
>
> Console.
> Console.
> Console.
> Console.
> Assert.
> }
>
>
> [Test]
> public void TestThatPasses()
> {
> const string ExpectedString = "NUnit is :) happy!";
> Console.
> Console.
> Assert.
> }
>
> -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.StringMatch
>
> 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:/
>
> Title:
> Exception in -Is.StringMatch
>
> 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.
> string actualString = encoding.
>
> Console.
> Console.
> Console.
> Console.
> Assert.
> }
>
> This is the exception:
>
> NUnit is :) happy!
> NUnit is :) happy!
> 18
> 18
>
> System.
> at System.
> at System.
> at System.
> options, Boolean useCache)
> at System.
> RegexOptions options)
> at NUnit.Framework
> at NUnit.Framework
> String message, Object[] args)
> at MyCopy.
>
>
> ------
> I ran NUnit using the console and ReSharper.
>
> To unsubscribe from this bug, go to:
> https:/
>
> --
> You received this bug notification because you are subscribed to NUnit
> Framework.
> https:/
>
> Title:
> Exception in -Is.StringMatch
>