On Thu, 14 Jan 2010 18:36:12 +0000, MRAB wrote:
>> And here are your unit tests. Every line should print "True". >> >> print ishex('123') is True >> print ishex('abc') is True >> print ishex('xyz') is False >> print ishex('0123456789abcdefABCDEF') is True >> print ishex('0123456789abcdefABCDEFG') is False >> > Don't use 'is', use '=='. I beg to differ. In this case, since ishex is intended to return True or False and not 1.0 or Decimal(0), the correct test for the purposes of unit-testing is the identity test, not equality. However, for the purposes of *displaying* the result, rather than saying: print ishex('123') is True one should obviously say: print ishex('123') is True is True No, wait, that should be: print ishex('123') is True is True is True No wait, this is better: print ishex('123') is True is True is True is True *wink* Seriously, just say print ishex('123'). It already returns True or False, you don't need to compare it to True or False to get a True or False answer. > BTW, ishex('') should return False. Only if you want to be inconsistent with other isFoo string functions: >>> ''.isalpha() False >>> ''.isupper() False >>> ''.islower() False >>> ''.isspace() False Also, if ishex(s) returns True, then a reasonable person will expect that calling int(s, 16) should succeed. But if s is the empty string, it will fail. -- Steven -- http://mail.python.org/mailman/listinfo/python-list