Nathan,
Your function is good and solid. And your tests do test all the right stuff, but we're really looking for you to control the test logic with a for loop. You'll find that's much cleaner as you won't have this giant stack of assert statements. You'll have to set up another structure to iterate over in a loop, but that shouldn't be too hard. Please make that change and everything else is good.