This is the new Lambda syntax that comes with .Net 3.5, so it is something
that will become more and more prevalent in managed code.  There are some
good examples on MSDN, or I could post some if there is interest.

Phil
Philip Japikse, MCSD.Net, MCDBA, CSM
Principal Consultant
Pinnacle Solutions, Inc
[email protected]
www.japikse.blogspot.com
twitter/skimedic
(513) 312-5664


-----Original Message-----
From: [email protected] [mailto:[email protected]] On
Behalf Of Mads Nissen
Sent: Wednesday, January 21, 2009 11:31 AM
To: MbUnit.User
Subject: Re: AssertEx.That. Was: MbUnit and NUnit Syntax helper?


I'll definately give this a go, even though the Assert*Ex* gives me
the creeps:-)

First impression (in being rather green on the linq'ish expressions)
is that the () => thingy feels a bit unintuitive. I'm sorta getting
used to it from the TypeMock Isolator stuff, but I still find it a
little bit..ehm.. nonexpressive.. Are there more advanced usages of
this semantic that might give me some more insight on the potential?

mads

On Jan 21, 12:09 am, Jeff Brown <[email protected]> wrote:
> 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