Unless you're a 0.1% coder, your mental call graph can't handle every corner case perfectly anyway, so you need tests too.
Actually, for exactly the reasons you mention: I'm not dumb enough to believe I'm a genius. I'll always miss something. So I can't rely on my tests to ensure correctness. It takes deeper thought and careful design.