@@ -62,4 +62,50 @@ def test_relaxed_passes_with_mixed_digits
62
62
def test_passes_with_integer_with_leading_zero
63
63
assert @rule_relax . passes? ( 'amount' , '08' , nil )
64
64
end
65
+
66
+ def test_passes_with_single_zero
67
+ assert @rule . passes? ( 'amount' , '0' , nil )
68
+ assert_equal 0 , @rule . coerce ( '0' )
69
+ end
70
+
71
+ def test_passes_with_multiple_zeros
72
+ assert @rule . passes? ( 'amount' , '00' , nil )
73
+ assert_equal 0 , @rule . coerce ( '00' )
74
+ end
75
+
76
+ # Test for leading zeros before other digits
77
+ def test_removes_leading_zeros_before_digits
78
+ assert @rule . passes? ( 'amount' , '01' , nil )
79
+ assert_equal 1 , @rule . coerce ( '01' )
80
+
81
+ assert @rule . passes? ( 'amount' , '0123' , nil )
82
+ assert_equal 123 , @rule . coerce ( '0123' )
83
+
84
+ assert @rule . passes? ( 'amount' , '00123' , nil )
85
+ assert_equal 123 , @rule . coerce ( '00123' )
86
+ end
87
+
88
+ def test_handles_zeros_with_whitespace
89
+ assert @rule . passes? ( 'amount' , ' 0 ' , nil )
90
+ assert_equal 0 , @rule . coerce ( ' 0 ' )
91
+
92
+ assert @rule . passes? ( 'amount' , ' 00 ' , nil )
93
+ assert_equal 0 , @rule . coerce ( ' 00 ' )
94
+ end
95
+
96
+ def test_handles_negative_numbers_with_leading_zeros
97
+ assert @rule . passes? ( 'amount' , '-001' , nil )
98
+ assert_equal ( -1 , @rule . coerce ( '-001' ) )
99
+
100
+ assert @rule . passes? ( 'amount' , '-00123' , nil )
101
+ assert_equal ( -123 , @rule . coerce ( '-00123' ) )
102
+ end
103
+
104
+ def test_handles_positve_numbers_with_leading_zeros
105
+ assert @rule . passes? ( 'amount' , '+001' , nil )
106
+ assert_equal ( 1 , @rule . coerce ( '+001' ) )
107
+
108
+ assert @rule . passes? ( 'amount' , '+00123' , nil )
109
+ assert_equal ( 123 , @rule . coerce ( '+00123' ) )
110
+ end
65
111
end
0 commit comments