I don't know that I quite understand what you're trying to do but the
compiler will not check this for you.

In fact you can say Arg<long>.Is.EqualTo("hello world") since under the
covers EqualTo takes in an object.

Kind of a lengthy explanation but the ArgConstraints don't really do a lot
of type checking (for good reason).  I just fixed a bug last week where
Arg<long>.Is.EqualTo(1) was not working because the 1 was being inferred as
an Int32.  When the actual call was made the parameter comes in as an Int64
and won't match inside ArgManager.

Kind of confusing I know.

On Tue, Sep 15, 2009 at 3:17 AM, Timores <[email protected]> wrote:

>
> I may have misunderstood the formalism here.
> If a method is declared as taking a T, I don't understand the point of
> setting the constraint of checking that the argument is really a T.
> The compiler already does this, if I am not mistaken.
> I am interested in checking that the argument is actually of type U,
> where U derives from T.
>
> Does this make sense  ?
>
> On Sep 14, 8:45 pm, bill richards <[email protected]>
> wrote:
> > Surely you want
> >
> > T TypeOf<T>
> >
> > and not
> >
> > U TypeOf<T>
> >
> > The first one says "when I say give me an object of type T I expect to
> > be given an object of type T."
> > The second one says "when I say give me an object of type T, I expect
> > to be given an objecct of type U"
> >
> > I know which one makes sense to me.
> >
> > Or have I missed something?
> >
> > On Sep 14, 12:41 pm, Timores <[email protected]> wrote:
> >
> >
> >
> > > Hi,
> > > In RhinoMocks 3.6 there is the TypeOf property in Arg<T>. It checks
> > > that the argument is really of type T. I am new to mocks, so I am a
> > > bit hesitant to ask if this is really useful. The compiler will not
> > > let us pass anything else than a T as the argument.
> >
> > > What I'd like instead is what I think is in the docs, i.e. a TypeOf<U>
> > > property, like this:
> >
> > > public T TypeOf<U>
> > >     : where U : T
> > >                 {
> > >                         get
> > >                         {
> > >
> ArgManager.AddInArgument(Is.TypeOf<U>());
> > >                                 return default(T);
> > >                         }
> > >                 }
> >
> > > When a method accepts an abstract class as a parameter, it is useful
> > > in a unit test to check that an argument is of a more derived type.
> >
> > > What do you think ?
> >
> > > Regards,
> > > Jean-Marie
> >
>


-- 
Tim Barcz
Microsoft ASPInsider
http://timbarcz.devlicio.us
http://www.twitter.com/timbarcz

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino.Mocks" 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/rhinomocks?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to