Skip to content

Commit

Permalink
unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
iganev committed Feb 28, 2024
1 parent 5b68d9d commit 2cf8a18
Showing 1 changed file with 69 additions and 1 deletion.
70 changes: 69 additions & 1 deletion tests/datatypes_work.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use database_reflection::reflection::{DefaultValue, JsonDatatype, JsonNumber, JsonString, ParseDatatypeError, SqlDatatype, SqlSigned};
use database_reflection::reflection::{DefaultValue, JsonDatatype, JsonNumber, JsonString, ParseDatatypeError, RustDatatype, SqlDatatype, SqlSigned};
use serde_json::Value;
use std::str::FromStr;

Expand All @@ -20,6 +20,10 @@ fn test_datatypes() {
SqlDatatype::try_from("int(10) unsigned"),
Ok(SqlDatatype::Int(10, SqlSigned::Unsigned))
);
assert_eq!(
SqlDatatype::try_from("int(10)"),
Ok(SqlDatatype::Int(10, SqlSigned::Signed))
);
assert_eq!(
SqlDatatype::try_from("int(10) unsigned").ok().map(|t| t.sign()).unwrap_or_default(),
Some(SqlSigned::Unsigned)
Expand All @@ -28,6 +32,14 @@ fn test_datatypes() {
SqlDatatype::try_from("int(10) unsigned").ok().map(|t| t.len()).unwrap_or_default(),
Some(10)
);
assert_eq!(
SqlDatatype::try_from("int(10) unsigned").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("u32".to_string(), Some(10)))
);
assert_eq!(
SqlDatatype::try_from("int(10)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("i32".to_string(), Some(10)))
);
assert_eq!(
SqlDatatype::try_from("smallint(5) unsigned"),
Ok(SqlDatatype::Smallint(5, SqlSigned::Unsigned))
Expand All @@ -40,6 +52,10 @@ fn test_datatypes() {
SqlDatatype::try_from("smallint(5) unsigned").ok().map(|t| t.len()).unwrap_or_default(),
Some(5)
);
assert_eq!(
SqlDatatype::try_from("smallint(5)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("i32".to_string(), Some(5)))
);
assert_eq!(
SqlDatatype::try_from("mediumint(15) unsigned"),
Ok(SqlDatatype::Mediumint(15, SqlSigned::Unsigned))
Expand All @@ -52,6 +68,10 @@ fn test_datatypes() {
SqlDatatype::try_from("mediumint(15) unsigned").ok().map(|t| t.len()).unwrap_or_default(),
Some(15)
);
assert_eq!(
SqlDatatype::try_from("mediumint(15)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("i32".to_string(), Some(15)))
);
assert_eq!(
SqlDatatype::try_from("bigint(32)"),
Ok(SqlDatatype::Bigint(32, SqlSigned::Signed))
Expand All @@ -68,6 +88,14 @@ fn test_datatypes() {
SqlDatatype::try_from("bigint(32)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::Number(JsonNumber::BigInt))
);
assert_eq!(
SqlDatatype::try_from("bigint(32) unsigned").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("u64".to_string(), Some(32)))
);
assert_eq!(
SqlDatatype::try_from("bigint(32)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("i64".to_string(), Some(32)))
);
assert_eq!(
SqlDatatype::try_from("float(4,2)"),
Ok(SqlDatatype::Float(4, 2, SqlSigned::Signed))
Expand All @@ -84,6 +112,10 @@ fn test_datatypes() {
SqlDatatype::try_from("float(4,2)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::Number(JsonNumber::Float))
);
assert_eq!(
SqlDatatype::try_from("float(4,2)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("f32".to_string(), Some(2)))
);
assert_eq!(
SqlDatatype::try_from("double(10,2) unsigned"),
Ok(SqlDatatype::Double(10, 2, SqlSigned::Unsigned))
Expand All @@ -100,6 +132,10 @@ fn test_datatypes() {
SqlDatatype::try_from("double(10,2) unsigned").ok().map(|t| t.len()).unwrap_or_default(),
Some(10)
);
assert_eq!(
SqlDatatype::try_from("double(10,2)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("f64".to_string(), Some(2)))
);
assert_eq!(
SqlDatatype::try_from("decimal(10,2) unsigned"),
Ok(SqlDatatype::Decimal(10, 2, SqlSigned::Unsigned))
Expand All @@ -118,11 +154,19 @@ fn test_datatypes() {
SqlDatatype::try_from("date").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::String(JsonString::Date, Some(10)))
);
assert_eq!(
SqlDatatype::try_from("date").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(10)))
);
assert_eq!(SqlDatatype::try_from("time"), Ok(SqlDatatype::Time));
assert_eq!(
SqlDatatype::try_from("time").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::String(JsonString::Time, Some(8)))
);
assert_eq!(
SqlDatatype::try_from("time").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(8)))
);
assert_eq!(SqlDatatype::try_from("datetime"), Ok(SqlDatatype::Datetime));
assert_eq!(
SqlDatatype::try_from("timestamp"),
Expand All @@ -132,6 +176,10 @@ fn test_datatypes() {

assert_eq!(SqlDatatype::try_from("char(64)"), Ok(SqlDatatype::Char(64)));
assert_eq!(SqlDatatype::try_from("char(64)").ok().map(|t| t.len()).unwrap_or_default(), Some(64));
assert_eq!(
SqlDatatype::try_from("char(64)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(64)))
);
assert_eq!(
SqlDatatype::try_from("varchar(45)"),
Ok(SqlDatatype::Varchar(45))
Expand All @@ -145,10 +193,18 @@ fn test_datatypes() {
SqlDatatype::try_from("varchar(64)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::String(JsonString::String, Some(64)))
);
assert_eq!(
SqlDatatype::try_from("varchar(64)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(64)))
);
assert_eq!(
SqlDatatype::try_from("text(1024)"),
Ok(SqlDatatype::Text(1024))
);
assert_eq!(
SqlDatatype::try_from("text(1024)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(1024)))
);
assert_eq!(SqlDatatype::try_from("text(1024)").ok().map(|t| t.len()).unwrap_or_default(), Some(1024));
assert_eq!(SqlDatatype::try_from("text"), Ok(SqlDatatype::Text(65535)));
assert_eq!(SqlDatatype::try_from("text").ok().map(|t| t.len()).unwrap_or_default(), Some(65535));
Expand All @@ -167,6 +223,10 @@ fn test_datatypes() {
SqlDatatype::try_from("varbinary(32)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::String(JsonString::String, Some(32)))
);
assert_eq!(
SqlDatatype::try_from("varbinary(32)").ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(32)))
);
assert_eq!(
SqlDatatype::try_from(r#"enum("one","two","three")"#),
Ok(SqlDatatype::Enum(vec![
Expand All @@ -180,6 +240,10 @@ fn test_datatypes() {
SqlDatatype::try_from(r#"enum("one","two","three")"#).ok().map(|t| (&t).try_into()).unwrap(),
Ok(JsonDatatype::Array(vec!["one".to_string(), "two".to_string(), "three".to_string()]))
);
assert_eq!(
SqlDatatype::try_from(r#"enum("one","two","three")"#).ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("String".to_string(), Some(5)))
);
assert_eq!(
SqlDatatype::try_from(r#"set("this","that")"#),
Ok(SqlDatatype::Set(vec![
Expand All @@ -188,6 +252,10 @@ fn test_datatypes() {
]))
);
assert_eq!(SqlDatatype::try_from(r#"set("this","that")"#).ok().map(|t| t.len()).unwrap_or_default(), Some(2));
assert_eq!(
SqlDatatype::try_from(r#"set("this","that")"#).ok().map(|t| (&t).try_into()).unwrap(),
Ok(RustDatatype("Vec<String>".to_string(), Some(2)))
);

assert_eq!(
SqlDatatype::try_from("varchar(nan)"),
Expand Down

0 comments on commit 2cf8a18

Please sign in to comment.