Invariant-Driven Coding Drill With Adversarial Tests