On Mon, 28 Aug 2000, Dave Thomas wrote:

> Robert Feldt <feldt / ce.chalmers.se> writes:
> 
> > Yes, that's a solution. IMHO, it's not very "beautiful" since you need to
> > duplicate code and I thought there might be a simpler way... (Now I
> > suspect you'll tell me thta I should be pragmatic and write a code
> > generator? :-))
> 
> Nope:
>
> But in reality, what code is duplicated? There's the two lines
> def setup/end, and the framework around the class. It really seems
> fairly minimal, particular as a nonpolymorphic equivalent would have
> some kind of conditional statement which itself had duplicated code (a 
> test and some scaffolding).
> 
You have a point there but I'm still surprised why you don't suggest
code generation. To be specific in the ruby extension for Random number
generation we're working on we don't know (at the time of writing the
tests) what parameters to RandomNumberGenerator are valid (currently you
have a choice of 33 different RNG algorithms stored in
Random::RngAlgorithms but that changes as we add/subtract new/bad algs).
So it's pretty simple to generate the code for the test classes you
suggested previously.

However, in a general case the parameters to a class might be arbitrarily
complex (involving large parse trees or what-have-you) so people would
probably need a way to dynamically parameterize TestCase-derived classes.
Could you do it with Binding's (ie. saving the state at the time of
creating the class with a certain parameter)?

Regards,

Robert