Test: throw exception when park car while parking lot is already full
TPP: nil -> constant (IllegalStateException -> NoAvailableSpaceException). The origin code "throw new IllegalStateException" is actually a Java language burden which makes it a must-have. So, that's why I feel current code "throw new NoAvailableSpaceException" is a transformation from no code to constant
Remove unnecessary fail() call in the test
Test: throw exception when leave car with parking id out of range
TPP: unconditional -> if (the new execution path is nil -> constant)
Test: throw exception when leave car with parking id bigger than the biggest possible id
TPP: statement -> statements (adding a or condition)
Test: throw exception when leave car with parking id belong to an available space
TPP: unconditional -> if (the new execution path nil -> constant)
Reorganize test cases into two classes