connect four (game)

bartc bc at freeuk.com
Mon Nov 27 06:38:24 EST 2017


On 27/11/2017 03:04, Michael Torrie wrote:
> On 11/26/2017 08:39 AM, bartc wrote:
>> The problem was traced to two lines that were in the wrong order (in the
>> original program). I can't see how unit tests can have helped in any way
>> at all, and it would probably have taken much longer.
> 
> What makes you think that?  Surely other decoders were doing the right
> thing and you could compare your output against theirs?  JPEGs may be
> lossy but the path through the decoder should be deterministic.
> 
> Or even if every decoder is slightly unique, at least yours should
> output self-consistent data.

The original used some floating point code, I changed that to use 
integer code (eg a combination of multiplying and shifting; it make a 
difference on compiled version, perhaps not so much in .py).

But also (IIRC) there was a difference in taking the remainder of 
negative integer division, where different compilers may round up or down.

So there can easily be differences when compared at the binary level, 
but which shouldn't be noticeable with the human eye.

(https://pastebin.com/P7V1Bvkk
https://pastebin.com/raw/P7V1Bvkk  raw version with no ads, or colour)

  In other words, once you know you fixed
> the chroma problem, you can use that jpeg as a unit test to make sure
> future big fixes and enhancements don't break something else.
> Regression testing is very important. Many times I've fixed a bug, only
> to introduce new ones that broke formerly correct behavior.
> 
> Anyway, unit testing is certainly a challenging concept, and I'm no more
> good at it than you are.

Some people are obsessed with having unit tests. Others are the same 
about using debuggers, especially in compiled code.

I've never used either, but I do alright. Some of the stuff I do is 
unsuitable for those for technical reasons, but also some of the 
problems I've come across just don't fit into such patterns.

People should use what works best for them, unless they're in a team 
where the have to use certain tools and working methods.


-- 
bartc



More information about the Python-list mailing list