diff --git a/src/parser/test/other.rs b/src/parser/test/other.rs index 529c5e4..2e04624 100644 --- a/src/parser/test/other.rs +++ b/src/parser/test/other.rs @@ -213,20 +213,54 @@ fn test_parse_backslash_query() { } #[test] -pub fn use_databases_1() { - let text = r#" - Use asdf; - "# - .to_owned(); - - let mut parser = Parser::with_string(text).unwrap(); - - let expected = UseDatabaseQuery { - database_name: "asdf".into(), - }; - - assert_eq!( - parser.parse(ParserContext::default()).unwrap(), - vec![expected.into()], - ); +fn test_parse_use_query() { + struct TestCase { + name: String, + input: Vec, + expected: SQLStatement, + want_error: bool, + } + + let test_cases = vec![ + TestCase { + name: "Use Database".into(), + input: vec![Token::Identifier("asdf".into())], + expected: UseDatabaseQuery { + database_name: "asdf".into(), + } + .into(), + want_error: false, + }, + TestCase { + name: "오류: 빈 토큰".into(), + input: vec![], + expected: Default::default(), + want_error: true, + }, + TestCase { + name: "오류: DELETe".into(), + input: vec![Token::Delete], + expected: Default::default(), + want_error: true, + }, + ]; + + for t in test_cases { + let mut parser = Parser::new(t.input); + + let got = parser.parse_use_query(Default::default()); + + 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); + } + } }