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