What part of "return false if there are not exactly 10 characters left after discarding dashes" fails to handle the empty string? A test case for the empty string is is only valuable if the empty string is NOT a special case. On Wed, 2 Sep 2020 at 22:52, Roelof Wobben <r.wobben@home.nl> wrote:
Op 2-9-2020 om 12:38 schreef Richard O'Keefe:
There is simply no point in "taking the first nine numbers out". And there shouldn't BE a test for the string being empty, anywhere. '' '-' '---' and so on should all be handled the same way.
Oh well, what stops you doing
digits := aString select: [:each | each ~= $-]. digits size = 10 ifFalse: [^false]. lastDigit := digits la ost. digits := digits copyFrom: 1 to: 9. ( (lastDigit = $X or: [lastDigit isDigit]) and: [ digits allSatisfy: #isDigit] ) ifFalse: [^false].
Now my code does not do this, but it is just 16 lines of code with nothing that it would make sense to extract.
Nothing only that I could not think of this one for myself. If I do it the TDD way I come more on the way Im currently thinking
but does this case then be covered
test14_EmptyIsbn | result | result := isbnVerifierCalculator isValidIsbn: ''. self assert: result equals: false
and still I have to do the calcualation to see if it's valid. If I understand the code well I can use the digits variable ?
Roelof