We'll create some simple unit tests of the Card class hierarchy and the card() factory function.
As the Card classes are so simple, there's no reason for overly sophisticated testing. It's always possible to err on the side of needless complication. An unthinking slog through a test-driven development process can make it seem like we need to write a fairly large number of not very interesting unit tests for a class that only has a few attributes and methods.
It's important to understand that test-driven development is advice, not a natural law like the conservation of mass. Nor is it a ritual that must be followed without thinking.
There are several schools of thought on naming test methods. We'll focus on a style ...