1
1
package org.partiql.lang.eval
2
2
3
- import junitparams.Parameters
4
3
import org.junit.jupiter.api.Test
4
+ import org.junit.jupiter.params.ParameterizedTest
5
+ import org.junit.jupiter.params.provider.MethodSource
5
6
import org.partiql.errors.ErrorCode
6
7
import org.partiql.errors.Property
7
8
import org.partiql.lang.util.propertyValueMapOf
@@ -14,25 +15,10 @@ import java.math.BigInteger
14
15
*/
15
16
class EvaluatingCompilerIntTest : EvaluatorTestBase () {
16
17
17
- private val closeToMaxLong = (Long .MAX_VALUE - 1 )
18
- private val closeToMinLong = (Long .MIN_VALUE + 1 )
19
-
20
- private val bigInt = BigInteger .valueOf(Long .MAX_VALUE ).times(BigInteger .valueOf(2 ))
21
- private val negativeBigInt = BigInteger .valueOf(Long .MIN_VALUE ).times(BigInteger .valueOf(2 ))
22
-
23
- @Test
24
- @Parameters
18
+ @ParameterizedTest
19
+ @MethodSource(" parametersForValues" )
25
20
fun values (pair : Pair <String , String >) = assertPair(pair)
26
21
27
- fun parametersForValues (): List <Pair <String , String >> {
28
- val parameters = mutableListOf<Pair <String , String >>()
29
- parameters.add(" $closeToMaxLong " to " $closeToMaxLong " )
30
- parameters.add(" $closeToMinLong " to " $closeToMinLong " )
31
- parameters.add(" `0x00ffFFffFFffFFff`" to " 72057594037927935" )
32
-
33
- return parameters
34
- }
35
-
36
22
@Test
37
23
fun bigInt () = runEvaluatorErrorTestCase(
38
24
" $bigInt " ,
@@ -47,15 +33,10 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
47
33
expectedErrorContext = propertyValueMapOf(1 , 2 )
48
34
)
49
35
50
- @Test
51
- @Parameters
52
- fun plus (pair : Pair <String , String >) = assertPair(pair)
53
-
54
- fun parametersForPlus (): List <Pair <String , String >> {
55
- val parameters = mutableListOf<Pair <String , String >>()
56
- // Deliberately kept in case we need to manually add test case in the future.
57
- return parameters
58
- }
36
+ // EMPTY
37
+ // @ParameterizedTest
38
+ // @MethodSource("parametersForPlus")
39
+ // fun plus(pair: Pair<String, String>) = assertPair(pair)
59
40
60
41
@Test
61
42
fun plusOverflow () = runEvaluatorErrorTestCase(
@@ -65,15 +46,10 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
65
46
expectedPermissiveModeResult = " MISSING"
66
47
)
67
48
68
- @Test
69
- @Parameters
70
- fun minus (pair : Pair <String , String >) = assertPair(pair)
71
-
72
- fun parametersForMinus (): List <Pair <String , String >> {
73
- val parameters = mutableListOf<Pair <String , String >>()
74
- // Deliberately kept in case we need to manually add test case in the future.
75
- return parameters
76
- }
49
+ // EMPTY
50
+ // @ParameterizedTest
51
+ // @MethodSource("parametersForMinus")
52
+ // fun minus(pair: Pair<String, String>) = assertPair(pair)
77
53
78
54
@Test
79
55
fun minusUnderflow () = runEvaluatorErrorTestCase(
@@ -83,18 +59,10 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
83
59
expectedPermissiveModeResult = " MISSING"
84
60
)
85
61
86
- @Test
87
- @Parameters
62
+ @ParameterizedTest
63
+ @MethodSource( " parametersForTimes " )
88
64
fun times (pair : Pair <String , String >) = assertPair(pair)
89
65
90
- fun parametersForTimes (): List <Pair <String , String >> {
91
- val parameters = mutableListOf<Pair <String , String >>()
92
-
93
- parameters.add(" ${Long .MAX_VALUE } * -1" to " -${Long .MAX_VALUE } " )
94
-
95
- return parameters
96
- }
97
-
98
66
@Test
99
67
fun timesOverflow () = runEvaluatorErrorTestCase(
100
68
" $closeToMaxLong * 2" ,
@@ -111,18 +79,10 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
111
79
expectedPermissiveModeResult = " MISSING"
112
80
)
113
81
114
- @Test
115
- @Parameters
82
+ @ParameterizedTest
83
+ @MethodSource( " parametersForDivision " )
116
84
fun division (pair : Pair <String , String >) = assertPair(pair)
117
85
118
- fun parametersForDivision (): List <Pair <String , String >> {
119
- val parameters = mutableListOf<Pair <String , String >>()
120
-
121
- parameters.add(" ${Long .MAX_VALUE } / -1" to " -${Long .MAX_VALUE } " )
122
-
123
- return parameters
124
- }
125
-
126
86
@Test
127
87
fun divisionUnderflow () = runEvaluatorErrorTestCase(
128
88
" ${Long .MIN_VALUE } / -1" ,
@@ -131,27 +91,10 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
131
91
expectedPermissiveModeResult = " MISSING"
132
92
)
133
93
134
- @Test
135
- @Parameters
94
+ @ParameterizedTest
95
+ @MethodSource( " parametersForBitwiseAnd " )
136
96
fun bitwiseAnd (pair : Pair <String , String >) = assertPair(pair)
137
97
138
- fun parametersForBitwiseAnd (): List <Pair <String , String >> {
139
- val parameters = mutableListOf<Pair <String , String >>()
140
-
141
- parameters.add(" 1 & 2" to " 0" )
142
- parameters.add(" 3 & 5" to " 1" )
143
- parameters.add(" 5 & 7" to " 5" )
144
- parameters.add(" 31 & 15 & 7 & 3 & 1" to " 1" )
145
- parameters.add(" 1 + 5 & 5" to " 4" )
146
- parameters.add(" (1 + 5) & 5" to " 4" )
147
- parameters.add(" 1 + (5 & 5)" to " 6" )
148
- parameters.add(" 5 & 5 + 1" to " 4" )
149
- parameters.add(" (5 & 5) + 1" to " 6" )
150
- parameters.add(" 5 & (5 + 1)" to " 4" )
151
-
152
- return parameters
153
- }
154
-
155
98
@Test
156
99
fun castBigInt () = runEvaluatorErrorTestCase(
157
100
" cast('$bigInt ' as int)" ,
@@ -202,4 +145,52 @@ class EvaluatingCompilerIntTest : EvaluatorTestBase() {
202
145
val (query, expected) = pair
203
146
runEvaluatorTestCase(query, expectedResult = expected)
204
147
}
148
+
149
+ companion object {
150
+
151
+ private val closeToMaxLong = (Long .MAX_VALUE - 1 )
152
+ private val closeToMinLong = (Long .MIN_VALUE + 1 )
153
+
154
+ private val bigInt = BigInteger .valueOf(Long .MAX_VALUE ).times(BigInteger .valueOf(2 ))
155
+ private val negativeBigInt = BigInteger .valueOf(Long .MIN_VALUE ).times(BigInteger .valueOf(2 ))
156
+
157
+ @JvmStatic
158
+ fun parametersForValues (): List <Pair <String , String >> = listOf (
159
+ " $closeToMaxLong " to " $closeToMaxLong " ,
160
+ " $closeToMinLong " to " $closeToMinLong " ,
161
+ " `0x00ffFFffFFffFFff`" to " 72057594037927935" ,
162
+ )
163
+
164
+ // Deliberately kept in case we need to manually add test case in the future.
165
+ @JvmStatic
166
+ fun parametersForPlus (): List <Pair <String , String >> = emptyList()
167
+
168
+ @JvmStatic
169
+ fun parametersForTimes (): List <Pair <String , String >> = listOf (
170
+ " ${Long .MAX_VALUE } * -1" to " -${Long .MAX_VALUE } "
171
+ )
172
+
173
+ @JvmStatic
174
+ fun parametersForDivision (): List <Pair <String , String >> = listOf (
175
+ " ${Long .MAX_VALUE } / -1" to " -${Long .MAX_VALUE } " ,
176
+ )
177
+
178
+ // Deliberately kept in case we need to manually add test case in the future.
179
+ @JvmStatic
180
+ fun parametersForMinus (): List <Pair <String , String >> = emptyList()
181
+
182
+ @JvmStatic
183
+ fun parametersForBitwiseAnd (): List <Pair <String , String >> = listOf (
184
+ " 1 & 2" to " 0" ,
185
+ " 3 & 5" to " 1" ,
186
+ " 5 & 7" to " 5" ,
187
+ " 31 & 15 & 7 & 3 & 1" to " 1" ,
188
+ " 1 + 5 & 5" to " 4" ,
189
+ " (1 + 5) & 5" to " 4" ,
190
+ " 1 + (5 & 5)" to " 6" ,
191
+ " 5 & 5 + 1" to " 4" ,
192
+ " (5 & 5) + 1" to " 6" ,
193
+ " 5 & (5 + 1)" to " 4" ,
194
+ )
195
+ }
205
196
}
0 commit comments