Skip to content

Commit

Permalink
Merge pull request #9 from myyrakle/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
myyrakle authored Jul 30, 2022
2 parents 63855e6 + 942ba15 commit 885638a
Showing 1 changed file with 112 additions and 52 deletions.
164 changes: 112 additions & 52 deletions src/lib/parser/test/expressions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@

use crate::lib::ast::predule::{
BetweenExpression, BinaryOperator, BinaryOperatorExpression, CallExpression, FunctionName,
SQLExpression, SelectItem, SelectQuery,
SQLExpression, SelectItem, SelectQuery, UnaryOperator, UnaryOperatorExpression,
};
use crate::lib::dml::{UnaryOperator, UnaryOperatorExpression};
use crate::lib::parser::predule::Parser;

#[test]
Expand All @@ -19,14 +18,14 @@ pub fn arithmetic_expression_1() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(3),
rhs: SQLExpression::Integer(5),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -47,21 +46,19 @@ pub fn arithmetic_expression_2() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Binary(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: SQLExpression::Integer(2),
}
.into(),
),
lhs: BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: SQLExpression::Integer(2),
}
.into(),
rhs: SQLExpression::Integer(3),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -82,21 +79,19 @@ pub fn arithmetic_expression_3() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: SQLExpression::Binary(
BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: SQLExpression::Integer(2),
rhs: SQLExpression::Integer(3),
}
.into(),
),
rhs: BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: SQLExpression::Integer(2),
rhs: SQLExpression::Integer(3),
}
.into(),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -117,28 +112,24 @@ pub fn arithmetic_expression_4() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Binary(
BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: SQLExpression::Binary(
BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: SQLExpression::Integer(2),
rhs: SQLExpression::Integer(3),
}
.into(),
),
lhs: BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: SQLExpression::Integer(2),
rhs: SQLExpression::Integer(3),
}
.into(),
),
}
.into(),
rhs: SQLExpression::Integer(4),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -159,7 +150,7 @@ pub fn arithmetic_expression_5() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: SQLExpression::Integer(2),
Expand All @@ -173,7 +164,7 @@ pub fn arithmetic_expression_5() {
),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -194,7 +185,7 @@ pub fn arithmetic_expression_6() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Binary(
.set_item(
BinaryOperatorExpression {
operator: BinaryOperator::Mul,
lhs: UnaryOperatorExpression {
Expand All @@ -205,7 +196,7 @@ pub fn arithmetic_expression_6() {
rhs: SQLExpression::Integer(5),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -226,13 +217,16 @@ pub fn function_call_expression_1() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::FunctionCall(CallExpression {
function_name: FunctionName {
database_name: None,
function_name: "coalesce".into(),
},
arguments: vec![SQLExpression::Null, SQLExpression::Integer(1)],
}))
.set_item(
CallExpression {
function_name: FunctionName {
database_name: None,
function_name: "coalesce".into(),
},
arguments: vec![SQLExpression::Null, SQLExpression::Integer(1)],
}
.into(),
)
.set_alias("foo".into())
.build(),
)
Expand All @@ -253,14 +247,80 @@ pub fn between_expression_1() {
let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(SQLExpression::Between(
.set_item(
BetweenExpression {
a: SQLExpression::Integer(3),
x: SQLExpression::Integer(1),
y: SQLExpression::Integer(5),
}
.into(),
))
)
.set_alias("foo".into())
.build(),
)
.build();

assert_eq!(parser.parse().unwrap(), vec![expected],);
}

#[test]
pub fn between_expression_2() {
let text = r#"
SELECT 3 between 1 and 5 + 1 as foo
"#
.to_owned();

let mut parser = Parser::new(text).unwrap();

let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(
BetweenExpression {
a: SQLExpression::Integer(3),
x: SQLExpression::Integer(1),
y: BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(5),
rhs: SQLExpression::Integer(1),
}
.into(),
}
.into(),
)
.set_alias("foo".into())
.build(),
)
.build();

assert_eq!(parser.parse().unwrap(), vec![expected],);
}

#[test]
pub fn between_expression_3() {
let text = r#"
SELECT 3 between 1 + 1 and 99 as foo
"#
.to_owned();

let mut parser = Parser::new(text).unwrap();

let expected = SelectQuery::builder()
.add_select_item(
SelectItem::builder()
.set_item(
BetweenExpression {
a: SQLExpression::Integer(3),
x: BinaryOperatorExpression {
operator: BinaryOperator::Add,
lhs: SQLExpression::Integer(1),
rhs: SQLExpression::Integer(1),
}
.into(),
y: SQLExpression::Integer(99),
}
.into(),
)
.set_alias("foo".into())
.build(),
)
Expand Down

0 comments on commit 885638a

Please sign in to comment.