Skip to content

Commit 88a47d5

Browse files
committed
[#148] parse_expression 테스트케이스 추가 (primitive)
1 parent 6f74f53 commit 88a47d5

File tree

1 file changed

+140
-0
lines changed

1 file changed

+140
-0
lines changed

src/parser/test/expressions.rs

+140
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,74 @@ fn test_parse_expression() {
262262
.into(),
263263
want_error: false,
264264
},
265+
TestCase {
266+
name: "3.0 between 1.2 and 5.3".into(),
267+
input: vec![
268+
Token::Float(3.0),
269+
Token::Between,
270+
Token::Float(1.2),
271+
Token::And,
272+
Token::Float(5.3),
273+
],
274+
expected: BetweenExpression {
275+
a: SQLExpression::Float(3.0),
276+
x: SQLExpression::Float(1.2),
277+
y: SQLExpression::Float(5.3),
278+
}
279+
.into(),
280+
want_error: false,
281+
},
282+
TestCase {
283+
name: r#""foo" between "3" and "4""#.into(),
284+
input: vec![
285+
Token::String("foo".to_owned()),
286+
Token::Between,
287+
Token::String("3".to_owned()),
288+
Token::And,
289+
Token::String("4".to_owned()),
290+
],
291+
expected: BetweenExpression {
292+
a: SQLExpression::String("foo".to_owned()),
293+
x: SQLExpression::String("3".to_owned()),
294+
y: SQLExpression::String("4".to_owned()),
295+
}
296+
.into(),
297+
want_error: false,
298+
},
299+
TestCase {
300+
name: r#"true between false and false"#.into(),
301+
input: vec![
302+
Token::Boolean(true),
303+
Token::Between,
304+
Token::Boolean(false),
305+
Token::And,
306+
Token::Boolean(false),
307+
],
308+
expected: BetweenExpression {
309+
a: SQLExpression::Boolean(true),
310+
x: SQLExpression::Boolean(false),
311+
y: SQLExpression::Boolean(false),
312+
}
313+
.into(),
314+
want_error: false,
315+
},
316+
TestCase {
317+
name: r#"null between null and null"#.into(),
318+
input: vec![
319+
Token::Null,
320+
Token::Between,
321+
Token::Null,
322+
Token::And,
323+
Token::Null,
324+
],
325+
expected: BetweenExpression {
326+
a: SQLExpression::Null,
327+
x: SQLExpression::Null,
328+
y: SQLExpression::Null,
329+
}
330+
.into(),
331+
want_error: false,
332+
},
265333
TestCase {
266334
name: "3 between 1 and 5 + 1".into(),
267335
input: vec![
@@ -449,6 +517,78 @@ fn test_parse_expression() {
449517
.into(),
450518
want_error: false,
451519
},
520+
TestCase {
521+
name: "3.14 + 4.4".into(),
522+
input: vec![
523+
Token::Float(3.14),
524+
Token::Operator(OperatorToken::Plus),
525+
Token::Float(4.4),
526+
],
527+
expected: BinaryOperatorExpression {
528+
operator: BinaryOperator::Add,
529+
lhs: SQLExpression::Float(3.14),
530+
rhs: SQLExpression::Float(4.4),
531+
}
532+
.into(),
533+
want_error: false,
534+
},
535+
TestCase {
536+
name: r#""3.14" + "4.4""#.into(),
537+
input: vec![
538+
Token::String("3.14".to_owned()),
539+
Token::Operator(OperatorToken::Plus),
540+
Token::String("4.4".to_owned()),
541+
],
542+
expected: BinaryOperatorExpression {
543+
operator: BinaryOperator::Add,
544+
lhs: SQLExpression::String("3.14".to_owned()),
545+
rhs: SQLExpression::String("4.4".to_owned()),
546+
}
547+
.into(),
548+
want_error: false,
549+
},
550+
TestCase {
551+
name: r#"true + false"#.into(),
552+
input: vec![
553+
Token::Boolean(true),
554+
Token::Operator(OperatorToken::Plus),
555+
Token::Boolean(false),
556+
],
557+
expected: BinaryOperatorExpression {
558+
operator: BinaryOperator::Add,
559+
lhs: SQLExpression::Boolean(true),
560+
rhs: SQLExpression::Boolean(false),
561+
}
562+
.into(),
563+
want_error: false,
564+
},
565+
TestCase {
566+
name: r#"null + null"#.into(),
567+
input: vec![
568+
Token::Null,
569+
Token::Operator(OperatorToken::Plus),
570+
Token::Null,
571+
],
572+
expected: BinaryOperatorExpression {
573+
operator: BinaryOperator::Add,
574+
lhs: SQLExpression::Null,
575+
rhs: SQLExpression::Null,
576+
}
577+
.into(),
578+
want_error: false,
579+
},
580+
TestCase {
581+
name: "오류: * 5".into(),
582+
input: vec![Token::Operator(OperatorToken::Asterisk), Token::Integer(5)],
583+
expected: Default::default(),
584+
want_error: true,
585+
},
586+
TestCase {
587+
name: "오류: (".into(),
588+
input: vec![Token::LeftParentheses],
589+
expected: Default::default(),
590+
want_error: true,
591+
},
452592
];
453593

454594
for t in test_cases {

0 commit comments

Comments
 (0)