When fixing #41, it is discovered that some of the tests might not properly testing what they want to test. More specifically, the tests testing exceptions seems not testing what they want to test and just happen to pass as well.
We need to revisit and improve the test cases.