@@ -26,6 +26,67 @@ protected function setUp()
26
26
\Locale::setDefault ('de_AT ' );
27
27
}
28
28
29
+ public function transformWithRoundingProvider ()
30
+ {
31
+ return array (
32
+ // towards positive infinity (1.6 -> 2, -1.6 -> -1)
33
+ array (1234.5 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
34
+ array (1234.4 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
35
+ array (-1234.5 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
36
+ array (-1234.4 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
37
+ // towards negative infinity (1.6 -> 1, -1.6 -> -2)
38
+ array (1234.5 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
39
+ array (1234.4 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
40
+ array (-1234.5 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
41
+ array (-1234.4 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
42
+ // away from zero (1.6 -> 2, -1.6 -> 2)
43
+ array (1234.5 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_UP ),
44
+ array (1234.4 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_UP ),
45
+ array (-1234.5 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_UP ),
46
+ array (-1234.4 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_UP ),
47
+ // towards zero (1.6 -> 1, -1.6 -> -1)
48
+ array (1234.5 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
49
+ array (1234.4 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
50
+ array (-1234.5 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
51
+ array (-1234.4 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
52
+ // round halves (.5) to the next even number
53
+ array (1234.6 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
54
+ array (1234.5 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
55
+ array (1234.4 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
56
+ array (1233.5 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
57
+ array (1232.5 , '1232 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
58
+ array (-1234.6 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
59
+ array (-1234.5 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
60
+ array (-1234.4 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
61
+ array (-1233.5 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
62
+ array (-1232.5 , '-1232 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
63
+ // round halves (.5) away from zero
64
+ array (1234.6 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
65
+ array (1234.5 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
66
+ array (1234.4 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
67
+ array (-1234.6 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
68
+ array (-1234.5 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
69
+ array (-1234.4 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
70
+ // round halves (.5) towards zero
71
+ array (1234.6 , '1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
72
+ array (1234.5 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
73
+ array (1234.4 , '1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
74
+ array (-1234.6 , '-1235 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
75
+ array (-1234.5 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
76
+ array (-1234.4 , '-1234 ' , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
77
+ );
78
+ }
79
+
80
+ /**
81
+ * @dataProvider transformWithRoundingProvider
82
+ */
83
+ public function testTransformWithRounding ($ input , $ output , $ roundingMode )
84
+ {
85
+ $ transformer = new IntegerToLocalizedStringTransformer (null , null , $ roundingMode );
86
+
87
+ $ this ->assertEquals ($ output , $ transformer ->transform ($ input ));
88
+ }
89
+
29
90
public function testReverseTransform ()
30
91
{
31
92
$ transformer = new IntegerToLocalizedStringTransformer ();
@@ -53,6 +114,67 @@ public function testReverseTransformWithGrouping()
53
114
$ this ->assertEquals (12345 , $ transformer ->reverseTransform ('12345,912 ' ));
54
115
}
55
116
117
+ public function reverseTransformWithRoundingProvider ()
118
+ {
119
+ return array (
120
+ // towards positive infinity (1.6 -> 2, -1.6 -> -1)
121
+ array ('1234,5 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
122
+ array ('1234,4 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
123
+ array ('-1234,5 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
124
+ array ('-1234,4 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_CEILING ),
125
+ // towards negative infinity (1.6 -> 1, -1.6 -> -2)
126
+ array ('1234,5 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
127
+ array ('1234,4 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
128
+ array ('-1234,5 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
129
+ array ('-1234,4 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_FLOOR ),
130
+ // away from zero (1.6 -> 2, -1.6 -> 2)
131
+ array ('1234,5 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_UP ),
132
+ array ('1234,4 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_UP ),
133
+ array ('-1234,5 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_UP ),
134
+ array ('-1234,4 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_UP ),
135
+ // towards zero (1.6 -> 1, -1.6 -> -1)
136
+ array ('1234,5 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
137
+ array ('1234,4 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
138
+ array ('-1234,5 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
139
+ array ('-1234,4 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_DOWN ),
140
+ // round halves (.5) to the next even number
141
+ array ('1234,6 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
142
+ array ('1234,5 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
143
+ array ('1234,4 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
144
+ array ('1233,5 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
145
+ array ('1232,5 ' , 1232 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
146
+ array ('-1234,6 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
147
+ array ('-1234,5 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
148
+ array ('-1234,4 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
149
+ array ('-1233,5 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
150
+ array ('-1232,5 ' , -1232 , IntegerToLocalizedStringTransformer::ROUND_HALF_EVEN ),
151
+ // round halves (.5) away from zero
152
+ array ('1234,6 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
153
+ array ('1234,5 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
154
+ array ('1234,4 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
155
+ array ('-1234,6 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
156
+ array ('-1234,5 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
157
+ array ('-1234,4 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_UP ),
158
+ // round halves (.5) towards zero
159
+ array ('1234,6 ' , 1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
160
+ array ('1234,5 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
161
+ array ('1234,4 ' , 1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
162
+ array ('-1234,6 ' , -1235 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
163
+ array ('-1234,5 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
164
+ array ('-1234,4 ' , -1234 , IntegerToLocalizedStringTransformer::ROUND_HALF_DOWN ),
165
+ );
166
+ }
167
+
168
+ /**
169
+ * @dataProvider reverseTransformWithRoundingProvider
170
+ */
171
+ public function testReverseTransformWithRounding ($ input , $ output , $ roundingMode )
172
+ {
173
+ $ transformer = new IntegerToLocalizedStringTransformer (null , null , $ roundingMode );
174
+
175
+ $ this ->assertEquals ($ output , $ transformer ->reverseTransform ($ input ));
176
+ }
177
+
56
178
/**
57
179
* @expectedException \Symfony\Component\Form\Exception\TransformationFailedException
58
180
*/
0 commit comments