On Monday, 3 August 2015 at 12:13:15 UTC, HaraldZealot wrote:
I found myself in situation that were good that all types
support `.examplevalues` property in unittest version. This
property will return array of predefined values for specified
type (we can even have some convention like `examplevalues[0]`
is `init`, `examplevalues[1]` is `min` (for numerical type) an
so on). If custom types doesn't redefine this property the
array consist only from `init`.
The use case for this: templated struct or class with
container-like semantics and internal unittest for method of
such class.
Thoughts?
Why don't you use templates? Something like:
enum ValueType
{
Init,
Min,
Max
}
auto exampleValues(T)()
{
T[ValueType] retVal;
retVal[ValueType.Init] = T.init;
static if (__traits(compiles, T.min)) retVal[ValueType.Min] =
T.min;
static if (__traits(compiles, T.max)) retVal[ValueType.Max] =
T.max;
return retVal;
}
exampleValues!int.writeln;
exampleValues!string.writeln;