1. unit test of a function should cover the corner case, no matter it is possible or impossible under current program logic. We should clear define the expected behavior under normal situation and abnormal situation.
2. prove "all the possibility values could be generated from the functions" is valuable and the implementation is not too complicated compare to current version
Please check my inline comment.
I also put my thought in summary:
1. unit test of a function should cover the corner case, no matter it is possible or impossible under current program logic. We should clear define the expected behavior under normal situation and abnormal situation.
2. prove "all the possibility values could be generated from the functions" is valuable and the implementation is not too complicated compare to current version