@@ -1140,3 +1140,89 @@ fn test_parse_function_call_expression() {
1140
1140
}
1141
1141
}
1142
1142
}
1143
+
1144
+ #[ test]
1145
+ fn test_parse_between_expression ( ) {
1146
+ struct TestCase {
1147
+ name : String ,
1148
+ a : SQLExpression ,
1149
+ input : Vec < Token > ,
1150
+ expected : SQLExpression ,
1151
+ want_error : bool ,
1152
+ }
1153
+
1154
+ let test_cases = vec ! [
1155
+ TestCase {
1156
+ name: "3 BETWEEN 1 AND 5" . into( ) ,
1157
+ a: SQLExpression :: Integer ( 3 ) ,
1158
+ input: vec![
1159
+ Token :: Between ,
1160
+ Token :: Integer ( 1 ) ,
1161
+ Token :: And ,
1162
+ Token :: Integer ( 5 ) ,
1163
+ ] ,
1164
+ expected: BetweenExpression {
1165
+ a: SQLExpression :: Integer ( 3 ) ,
1166
+ x: SQLExpression :: Integer ( 1 ) ,
1167
+ y: SQLExpression :: Integer ( 5 ) ,
1168
+ }
1169
+ . into( ) ,
1170
+ want_error: false ,
1171
+ } ,
1172
+ TestCase {
1173
+ name: "오류: 3 NOT" . into( ) ,
1174
+ a: SQLExpression :: Integer ( 3 ) ,
1175
+ input: vec![ Token :: Not ] ,
1176
+ expected: Default :: default ( ) ,
1177
+ want_error: true ,
1178
+ } ,
1179
+ TestCase {
1180
+ name: "오류: 3 NOT DROP" . into( ) ,
1181
+ a: SQLExpression :: Integer ( 3 ) ,
1182
+ input: vec![ Token :: Not , Token :: Drop ] ,
1183
+ expected: Default :: default ( ) ,
1184
+ want_error: true ,
1185
+ } ,
1186
+ TestCase {
1187
+ name: "오류: 빈 토큰" . into( ) ,
1188
+ a: SQLExpression :: Integer ( 3 ) ,
1189
+ input: vec![ ] ,
1190
+ expected: Default :: default ( ) ,
1191
+ want_error: true ,
1192
+ } ,
1193
+ TestCase {
1194
+ name: "오류: AND" . into( ) ,
1195
+ a: SQLExpression :: Integer ( 3 ) ,
1196
+ input: vec![ Token :: And ] ,
1197
+ expected: Default :: default ( ) ,
1198
+ want_error: true ,
1199
+ } ,
1200
+ TestCase {
1201
+ name: "오류: 1" . into( ) ,
1202
+ a: SQLExpression :: Integer ( 3 ) ,
1203
+ input: vec![ Token :: Integer ( 1 ) ] ,
1204
+ expected: Default :: default ( ) ,
1205
+ want_error: true ,
1206
+ } ,
1207
+ ] ;
1208
+
1209
+ for t in test_cases {
1210
+ let mut parser = Parser :: new ( t. input ) ;
1211
+
1212
+ let got: Result < SQLExpression , crate :: errors:: RRDBError > =
1213
+ parser. parse_between_expression ( t. a , Default :: default ( ) ) ;
1214
+
1215
+ assert_eq ! (
1216
+ got. is_err( ) ,
1217
+ t. want_error,
1218
+ "{}: want_error: {}, error: {:?}" ,
1219
+ t. name,
1220
+ t. want_error,
1221
+ got. err( )
1222
+ ) ;
1223
+
1224
+ if let Ok ( statements) = got {
1225
+ assert_eq ! ( statements, t. expected, "TC: {}" , t. name) ;
1226
+ }
1227
+ }
1228
+ }
0 commit comments