Re: [PATCH 0/4] Re: [PATCH 3/4] t: rev-parse-parents: avoid yoda conditions
- From
Felipe Contreras <felipe.contreras@gmail.com>
- Date
- Sep 8, 2013, 04:52 UTC
- Message-ID
- <CAMP44s1uasvGmCMkMF2N0eTMgOdksG0HqeidXK+159HAi4jkpA@mail.gmail.com>
- In-Reply-To
- <20130908042649.GC14019@sigill.intra.peff.net>
On Sat, Sep 7, 2013 at 11:26 PM, Jeff King <peff@peff.net> wrote:
Show 19 quoted lines
> On Sat, Sep 07, 2013 at 11:13:10PM -0500, Felipe Contreras wrote:
>
>> > If the reasoning is "cmp(actual, expect) makes more sense to humans"
>> > then I do not think it is universal.
>>
>> No.
>>
>> ---
>> A(ny) sanely defined "compare A with B" function should yield the
>> result of subtracting B from A, i.e. cmp(A,B) should be like (A-B).
>> That is what you feed qsort() and bsearch() (it is not limited to C;
>> you see the same in "sort { $a <=> $b }"). The definition naturally
>> makes "cmp(A,B) < 0" like "A < B" and "cmp(A,B) > 0" like "A > B".
>> ---
>
> Ah, you mean "if you think that the compare function should behave like
> C *_cmp functions, it should be A-B". Perhaps it is simply that I do not
> think of the function in those terms, but more like "show me the
> differences from B to A".But that is the problem, you are unable to ignore the implementation. You don't see test_cmp(), you see 'diff -u'.
Show 8 quoted lines
>> > Otherwise why would so many >> > existing test frameworks do it the other way? >> >> Which many existing frameworks do it the other way? > > John mentioned JUnit, NUnit, and PHPUnit earlier in the thread. I > believe that Ruby's Test::Unit::Assertions also has > assert_equal(expected, actual).
That's because they all do first expect, then actual.
assert_equal( expected, actual, failure_message = nil ) assert_not_equal( expected, actual, failure_message = nil )
That's why.
Show 15 quoted lines
>> > Or any number of variations. I'm sure you will say "but those seem >> > awkward and unlike how I think about it". But that was my point; it >> > seems to be a matter of preference. >> >> Really? You think any sane human being would prefer: >> >> Computer, given that we expect B, how does A differ? >> >> To: >> >> Computer, compare A with B > > I already said that is how I think about it. If you want to call me notn > sane, feel free. But I do not see that this line of discussion is going > anywhere productive.
Again, that's because you are already thinking on the resulting diff, based on the 'diff -u' command, but that's not in question here. Even if test_cmp() didn't return an diff (it just ran cmp), it would be useful, as ultimately we want to test for failures. Ultimately what we want is to check that A is equal to B, so it's natural to tell the computer "compare A with B", and if you don't think so, then yeah, I think you are insane.
-- Felipe Contreras