How many edge conditions can we diagnose for getProperNumerator
alone?
Each of these could be a separate unit test, but that's tedious.
Store input and expected output in matching arrays and write one test to iterate through them.
Even better: store the input and output in a text or XML file.