std.container: RedBlackTree questions

John Colvin john.loughran.colvin at gmail.com
Fri Aug 2 08:04:33 PDT 2013


On Friday, 2 August 2013 at 14:36:55 UTC, Ivan Kazmenko wrote:
> On Thursday, 1 August 2013 at 13:34:31 UTC, Ivan Kazmenko wrote:
>> On Thursday, 1 August 2013 at 12:55:30 UTC, John Colvin wrote:
>>> On Thursday, 1 August 2013 at 12:27:51 UTC, Ivan Kazmenko 
>>> wrote:
>>>> On a relevant note, I find the unittests of RedBlackTree a 
>>>> bit excessive even when they compile successfully.  They 
>>>> seem to test the integrity of the whole tree every time a 
>>>> tree operation takes place, and that makes the unittests 
>>>> version of my local code run too slowly.  Is there a way to 
>>>> turn unittests on only for user code and turn them off for 
>>>> the standard library?
>>>>
>>>> Ivan Kazmenko.
>>>
>>> Unless you've compiled phobos with -unittest, the unittests 
>>> in the standard library won't even exist in the binary, let 
>>> alone take up time to run.
>>>
>>> Unless... I'm mistaken and actually for some bizarre reason 
>>> unittests get dragged in from the import files, but that 
>>> seems very unlikely.
>>
>> There is a
>>> version(unittest) version = RBDoChecks;
>> line and the following
>>> version(RBDoChecks) check();
>> calls in the tree implementation.
>> Perhaps the approach is special to RedBlackTree.
>>
>> I agree that RBDoChecks can be useful occasionally, for 
>> example, when there is a bug in comparison function.  But I 
>> would be happy if the aforementioned line is removed from the 
>> library, or at least a way to override it is provided.
>
> I'm confused.  I think none of RedBlackTree code is 
> pre-compiled since it has compile-time parameters.  But when I 
> comment the
>> version(unittest) version = RBDoChecks;
> line in Phobos and recompile my example 4, I still get the same 
> errors with "-unittest" compiler option.  What's going on?

ugh yeah that's not nice. There is also the variable doUnittest 
in there

The unittests really need sorting out there. My suggestion for 
now would be to strip out all the unittests from it yourself. 
Also, create a bug report for it and hopefully someone will fix 
it.


More information about the Digitalmars-d-learn mailing list