How to think of test cases 1. Easy cases print_integer(5, 10, "") ⇒ output: "5" 2. Edge cases -- smallest, largest (or long enough), shortest, longest (or long enough) INT_MIN -- smallest n INT_MAX -- largest n radix=2 -- smallest radix radix=36 -- largest radix "" -------- shortest prefix "$€$$" ---- long enough prefix 3. Corner cases -- values where behavior of the program changes n --- single digit to multiple digit is a transition radix -- numeric digit bases (2-10) to alphanumeric bases (11-36) is a transition. Test at the corner, and also directly before/after. Ex: n=-1, n=0, n=1