oke, then I could use your idea but then I have to make the code for calculating if its a valid  number.
and I wonder if the code will not be too big. I learned that it is good that a method does only 1 thing and this one seems to be doing more then 1 thing.

Roelof



Op 4-9-2020 om 05:24 schreef Richard O'Keefe:
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.wob...@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



Reply via email to