Skip to content

Commit

Permalink
[#139] parse_desc_query 테스트코드 재작성
Browse files Browse the repository at this point in the history
  • Loading branch information
myyrakle committed Aug 10, 2024
1 parent 76bacf5 commit 414d42c
Showing 1 changed file with 77 additions and 22 deletions.
99 changes: 77 additions & 22 deletions src/parser/test/other.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,83 @@ fn test_parse_show_query() {
}
}

#[test]
fn test_parse_desc_query() {
struct TestCase {
name: String,
input: Vec<Token>,
context: ParserContext,
expected: SQLStatement,
want_error: bool,
}

let test_cases = vec![
TestCase {
name: "Desc Table".into(),
input: vec![Token::Identifier("asdf".into())],
context: Default::default(),
expected: DescTableQuery {
table_name: TableName {
database_name: None,
table_name: "asdf".into(),
},
}
.into(),
want_error: false,
},
TestCase {
name: "Desc Table with Database".into(),
input: vec![
Token::Identifier("rrdb".into()),
Token::Period,
Token::Identifier("asdf".into()),
],
context: Default::default(),
expected: DescTableQuery {
table_name: TableName {
database_name: Some("rrdb".into()),
table_name: "asdf".into(),
},
}
.into(),
want_error: false,
},
TestCase {
name: "오류: 빈 토큰".into(),
input: vec![],
context: Default::default(),
expected: Default::default(),
want_error: true,
},
TestCase {
name: "오류: DELETe".into(),
input: vec![Token::Delete],
context: Default::default(),
expected: Default::default(),
want_error: true,
},
];

for t in test_cases {
let mut parser = Parser::new(t.input);

let got = parser.parse_desc_query(t.context);

assert_eq!(
got.is_err(),
t.want_error,
"{}: want_error: {}, error: {:?}",
t.name,
t.want_error,
got.err()
);

if let Ok(statements) = got {
assert_eq!(statements, t.expected.into(), "TC: {}", t.name);
}
}
}

#[test]
pub fn show_databases_2() {
let text = r#"
Expand Down Expand Up @@ -109,25 +186,3 @@ pub fn use_databases_1() {
vec![expected.into()],
);
}

#[test]
pub fn desc_table_1() {
let text = r#"
desc asdf;
"#
.to_owned();

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

let expected = DescTableQuery {
table_name: TableName {
database_name: None,
table_name: "asdf".into(),
},
};

assert_eq!(
parser.parse(ParserContext::default()).unwrap(),
vec![expected.into()],
);
}

0 comments on commit 414d42c

Please sign in to comment.