Forwarding this here in case other people are curious about AssertEx.That.

---------- Forwarded message ----------
From: Jeff Brown <[email protected]>
Date: Tue, Jan 20, 2009 at 3:08 PM
Subject: Re: MbUnit Re: and NUnit Syntax helper?
To: Mads Nissen <[email protected]>


Wow!  That's an old thread!

Here's where we're at.  I decided not to try to support the NUnit syntax
helpers themselves.  Instead I invested some effort to provide a mechanism
for composing assertions together to create compound assertions over
collections.  See "Assert.Over...." for more on this.

In addition to that, I created an "AssertEx.That" method based on .Net 3.5
Expression Trees.  Here's how you use it.

1. Add a reference to the MbUnit35 and Gallio35 assemblies.

2. Try something like this:

string x = "Foo";
AssertEx.That(() => x.Contains("Bar"));

The assertion failure message will tell you not only that 'x' does not
contain "Bar" but also the value of 'x' was "Foo".

This syntax is quite flexible.  All captured variables are printed.  The
last subexpression before a failure occurs is also printed.  This is
particularly interesting with loops.

[Test]
public void Test()
{
    AssertIsFibonacci(new[] { 0, 1, 1, 2, 3, 5, 8, 12, 21 });
}

private void AssertIsFibonacci(IList<int> sequence)
{
    if (sequence.Count > 0)
    {
        AssertEx.That(() => sequence[0] == 0);

       if (sequence.Count > 1)
       {
          AssertEx.That(() => sequence[1] == 1);

          for (int i = 2; i < sequence.Count; i++)
             AssertEx.That(() => sequence[i] == sequence[i - 1] + sequence[i
- 2];
       }
   }
}

This test will fail.  However, in the failure message you will see the
following information:

a. That the value of 'i' at the time of the failure was 7.
b. That 'sequence' contains 0, 1, 1, 2, 3, 5, 8, 12, 21.
c. That 'sequence[i]' is 12.
d. That 'sequence[i - 1]' is 5.
e. That 'sequence[i - 2]' is 8.
f. That 'sequence[i - 1] + sequence[i - 2]' is 13.

And the whole thing failed of course because 12 != 13...

Try it out!  It takes a little getting used to but I think you'll find it
way more powerful than the NUnit Assert.That syntax helpers...  :-)

Jeff.


On Tue, Jan 20, 2009 at 1:28 PM, Mads Nissen <[email protected]> wrote:

> I've probably missed out on something; but has this been implemented?
> Running the latest Gallio distribution, but can't seem to find the
> assert.that syntax anywhere..
>
> thanks,
> mads
>
> On Jan 23 2008, 10:43 am, "Jeff Brown" <[email protected]> wrote:
> > Nope.  Alpha 1 is really just an early technology preview.  There's tons
> of
> > stuff missing / incomplete in that release.
> >
> > Alpha 2 will be released in two weeks with much more stuff.  The syntax
> > helpers and new constraint framework will go in Alpha 3.
> >
> > Wanna help out?
> >
> > Jeff.
> >
> > -----Original Message-----
> > From: [email protected] [mailto:[email protected]]
> On
> >
> > Behalf Of kementeus
> > Sent: Tuesday, January 22, 2008 9:20 PM
> > To: MbUnit.User
> > Subject: MbUnit Re: and NUnit Syntax helper?
> >
> > I've been testing mbUnit v3 alpha 1 and I can't see where is the syntax
> > helper support, well, there are not such namespace as
> > MbUnit.Framework.SyntaxHelpers or any similar to Assert.That, do I miss
> > something?
> >
> > On Dec 28 2007, 8:27 pm, "Jeff Brown" <[email protected]> wrote:
> > > Not yet, but it's planned for MbUnit v3.
> >
> > > Also, if you're using .Net 3.5 there will be new syntax helpers to
> > > take advantage of the expressive power of lambda's and extension
> methods.
> >
> > > In the meantime, you can always use the NUnit syntax helpers together
> > > with the MbUnit framework if you like.  :-)
> >
> > > Jeff.
> >
> > > -----Original Message-----
> > > From: [email protected] [mailto:[email protected]]
> > > On
> >
> > > Behalf Of kementeus
> > > Sent: Friday, December 28, 2007 6:09 PM
> > > To: MbUnit.User
> > > Subject: MbUnit and NUnit Syntax helper?
> >
> > > Hi everybody!
> >
> > > I am a newbie in MbUnit and a user of NUnit, one of the troubles I got
> > > when trying to switch from NUnit to MbUnit is the use of the NUnit
> > > Syntax Helpers (NUnit.Framework.SyntaxHelpers), for example
> >
> > > [Test]
> > > public void SyntaxHelperTest()
> > > {
> > >     int i = 5;
> > >     int j = 5;
> > >     Assert.That(i, Is.Equal(j));
> > > }
> >
> > > I guess it is more clean that the Assert.AreEqual friend that everyone
> > > of us know. Is any alternative in MbUnit for this?
> >
> > > Thanks a lot!
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"MbUnit.User" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/MbUnitUser?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to