Maybe .... I have written end-to-end tests, plus a few tests for some internal functions.
And then I have played with the code and with the design, and tried alternate ideas - relaxed, because I have sufficient test coverage so that I cannot break it. 
Of course the existing test cases don't tell me about missing test coverage in the alternate implementation, 
nor about overly complex implementation.