Discussion:
Operator overloads for constraints
Stephen Boissiere
2008-06-09 16:19:04 UTC
Permalink
Hi, I have a proposal for a possible improvement to nunit's usage. I
could implement this if there was a demand for it, but wanted to know a)
is it already there and b) is it worth it?

Basically if you have heard of LLBLGen Pro I was 'inspired' by an idea
from their code. It is a good ORM and I recommend it. Anyway, the point
is they allow you to build a query using operator overloads e.g.

table.Fill ( MyTable.MyField == 23 );

this would fill a table with all rows where MyField == 23. This is done
by overloading operator == to return an object instead of a bool. The
new object describes the comparison.

For nunit I propose an optional syntax like:

Assert.That(Is.Value(2 + 2) == 4);

'Value' is a proposed new static method. It would return a new class
(e.g. ValueWrapper) with overloaded operator == which returns an
'EqualConstraint'. Something like:

class ValueWrapper
{
...
public static EqualConstraint operator == ( ValueWrapper lhs, object
rhs )
{
return new EqualConstraint ( lhs.InnerValue, rhs );
}
...
}

So - am I too late, or is it just not that good an idea?

Thanks,
Stephen Boissiere

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
Charlie Poole
2008-06-10 16:08:04 UTC
Permalink
Hi Stephen,

I've experimented a bit with this sort of thing but without the
use of operator overloading. If you'd like to work on it, I'm
all for it.

I think I would prefer not to put the method that creates a
value wrapper on Is, since all other methods of that class
create Constraints.

A further point would be that you can't return a Constraint
from the overloaded == operator. A Constraint represents
a test and it's associated parameters but not the actual
value to which it is applied. So you would be returning
some object like ConstraintAppliedToActual - but hopefully
with a better name!

Charlie

Charlie
-----Original Message-----
Behalf Of Stephen Boissiere
Sent: Monday, June 09, 2008 5:19 PM
Subject: [nunit-developer] Operator overloads for constraints
Hi, I have a proposal for a possible improvement to nunit's
usage. I could implement this if there was a demand for it,
but wanted to know a) is it already there and b) is it worth it?
Basically if you have heard of LLBLGen Pro I was 'inspired'
by an idea from their code. It is a good ORM and I recommend
it. Anyway, the point is they allow you to build a query
using operator overloads e.g.
table.Fill ( MyTable.MyField == 23 );
this would fill a table with all rows where MyField == 23.
This is done by overloading operator == to return an object
instead of a bool. The new object describes the comparison.
Assert.That(Is.Value(2 + 2) == 4);
'Value' is a proposed new static method. It would return a
new class (e.g. ValueWrapper) with overloaded operator ==
class ValueWrapper
{
...
public static EqualConstraint operator == ( ValueWrapper
lhs, object rhs )
{
return new EqualConstraint ( lhs.InnerValue, rhs );
}
...
}
So - am I too late, or is it just not that good an idea?
Thanks,
Stephen Boissiere
--------------------------------------------------------------
-----------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for just about
anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
nunit-developer mailing list
https://lists.sourceforge.net/lists/listinfo/nunit-developer
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php

Loading...