yehorbolt_sql_parser 0.1.11

This is a simple SQL parser written in Rust using the pest library. The parser supports parsing CREATE TABLE statements with column definitions.
Documentation
extern crate anyhow;
extern crate yehorbolt_sql_parser;

use anyhow::*;
use yehorbolt_sql_parser::*;

#[test]
fn test_parse_create_table() -> anyhow::Result<()> {
    let test_create = "CREATE TABLE financial_report { 
            id INT, 
            currency_name TEXT, 
            is_usable BOOL 
        }";
    let Parsed::CreateTable(res) = parse_sql(test_create)?;

    assert_eq!(res.table_name, "financial_report");
    assert_eq!(res.column_info[0].column_name, "id");
    assert_eq!(res.column_info[0].column_type, SqlType::Int);
    assert_eq!(res.column_info[1].column_name, "currency_name");
    assert_eq!(res.column_info[1].column_type, SqlType::Text);
    assert_eq!(res.column_info[2].column_name, "is_usable");
    assert_eq!(res.column_info[2].column_type, SqlType::Bool);

    Ok(())
}

#[test]
fn test_parse_syntax_error() {
    let invalid_table = "ABOBA TABLE financial_report { 
        id INT, 
        currency_name TEXT, 
        is_usable BOOL 
    }";
    assert!(matches!(
        parse_sql(invalid_table),
        Err(SqlParseError::InvalidData)
    ));
}

#[test]
fn test_parse_create_table_name_error() {
    let invalid_table_name = "CREATE TABLE financial_report ABOBA { 
        id INT, 
        currency_name TEXT, 
        is_usable BOOL 
    }";
    assert!(matches!(
        parse_sql(invalid_table_name),
        Err(SqlParseError::InvalidData)
    ));
}

#[test]
fn test_parse_column_name_error() {
    let invalid_column_name = "CREATE TABLE financial_report { id ABOBA INT }";
    assert!(matches!(
        parse_sql(invalid_column_name),
        Err(SqlParseError::InvalidData)
    ));
}

#[test]
fn test_parse_column_type_error() {
    let invalid_column_type = "CREATE TABLE financial_report { id ABOBA }";
    assert!(matches!(
        parse_sql(invalid_column_type),
        Err(SqlParseError::InvalidData)
    ));
}

#[test]
fn test_parse_punctuation_error() {
    let invalid_punctuation = "CREATE TABLE financial_report , { id INT }";
    assert!(matches!(
        parse_sql(invalid_punctuation),
        Err(SqlParseError::InvalidData)
    ));
}