add amount decrease test case
add Amount.Cmp
add more error type