Robert Feldt <feldt / ce.chalmers.se> writes:

> 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.

True - in this particular case, where (presumably) the constructors all 
look alike, then you could have a single test driver that used  this
array of names (or whatever) to build and run yours tests. If there
was a regular pattern like this, I probably would use some form of
automatically generated list. For just three cases, I probably
wouldn't unless it was a real pain setting the tests up.


> 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)?

An easier way might be to use a factory method that hid this
intelligence within the class itself (or a helper). However, again,
I'd do this in a subclass of the class being tested, so that users of
the real class didn't have to have all this test-specific code lying
around.


Regards


Dave