[phobos] Split std.datetime in two?
Steve Schveighoffer
schveiguy at yahoo.com
Fri Feb 11 14:13:29 PST 2011
----- Original Message -----
> From:Andrei Alexandrescu <andrei at erdani.com>
>
> > ----- Original Message -----
> >> From:Andrei Alexandrescu<andrei at erdani.com>
> >>
> >> On Feb 11, 2011, at 2:39 PM, Steve
> Schveighoffer<schveiguy at yahoo.com>
> >> wrote:
> >
> > assert(foo(x)> 5);
> >
> > which x caused the problem? all I get is the line number for the assert.
>
> When the unittest fails I go and edit the code as such:
>
> assert(foo(x), text("foo(", x, ") failed"));
As long as the unit test looks like this to begin with, I have no problem. It should be the responsibility of the unit test writer to make sure the error messages clearly indicate what inputs cause the error.
I also want to stress that this is a simple loop example, and not too difficult to understand. I don't think complex factored code is a good idea to have.
BTW, where is text defined? It should be available everywhere.
> >>> I don't sympathize with you, we have tools to easily do this
> without
> >> much burden.
> >>
> >> A little while ago you didn't care to start a debugger or use
> writeln - two
> >> simple tools. I cry double standard.
> >
> > Um.. how are you reading the code if not using an editor? Using ctrl-F and
> typing in the function name is several orders of magnitude simpler than adding
> writelns, recompiling, or recompiling in debug mode (I'm counting the part
> where you have to dissect the makefile to figure out how to put the thing in
> debug mode in the first place) and debugging. It's like saying the burden
> of using the claw of a hammer that's already in your hand is the same as
> going to get a reciprocating saw to remove a nail. It's not even close to a
> double standard.
>
> How are you debugging code if not using stdio or a debugger?
It's an extra cycle to find the error conditions. Essentially, I have to first instrument the unit test to find out what is failing, then go instrument the function that is failing. Sometimes, I don't even need to do that, I can see the problem and just fix it, requiring no debugging.
> > Then I guess we differ. I prefer to have unit tests be simple statements
> that are easily proven mentally without much context. Complex code is more
> difficult to reason about, and as spir said, we don't want to have to unit
> test our unit tests.
>
> A simple loop is simpler than 100 unrolled instances of it.
Only if you are reading all 100 instances. When a unit test fails, I only care about 1. When reading code, I skip all unit tests, be they a loop of 100 or 100 individual ones.
>
> > I attach to this statement that the unit tests should test *different*
> things even if they look repetitive. For example, testing two corner cases
> might look very repetitive, but they both are looking for weaknesses in
> different places.
>
> I am certain that the unittests in std.datetime are well beyond 100% code
> coverage. IMHO they should stop at 100% coverage (which is probably at 20% of
> their size).
I cannot give an opinion on the coverage, but I agree that they should stop at 100%.
>
> Again, I feel like you do, save the numbers. Let me give you an example. Many
> would agree that sex is good. Yet few would agree that being required to perform
> it for 12 hours can be terrible. Eating is good too. Eating seven pounds of even
> the best food is a horrific experience.
I'm sure you meant something different about the sex analogy :)
I think these analogies are not relevant. One does not read scores of unit test, and writing a loop does not prevent you from having to come up with all the unit tests.
> There is a limit to everything. That limit has been passed many times over by
> the unittests in std.datetime.
The limit should be 100% coverage. If std.datetime passes that, it should be trimmed.
-Steve
____________________________________________________________________________________
It's here! Your new message!
Get new email alerts with the free Yahoo! Toolbar.
http://tools.search.yahoo.com/toolbar/features/mail/
More information about the phobos
mailing list