gluesql_test_suite/function/
md5.rs

1use {
2    crate::*,
3    gluesql_core::{
4        error::TranslateError,
5        prelude::{Payload, Value::*},
6    },
7};
8
9test_case!(md5, {
10    let g = get_tester!();
11
12    g.test(
13        "VALUES(MD5('GlueSQL'))",
14        Ok(select!(
15            column1
16            Str;
17            "4274ecec96f3ee59b51b168dc6137231".to_owned()
18        )),
19    )
20    .await;
21
22    g.test(
23        "CREATE TABLE MD5 (id INTEGER, text TEXT);",
24        Ok(Payload::Create),
25    )
26    .await;
27
28    g.test(
29        "INSERT INTO MD5 VALUES (1, 'GlueSQL Hi');",
30        Ok(Payload::Insert(1)),
31    )
32    .await;
33
34    g.test(
35        "SELECT MD5(text) AS md5 FROM MD5;",
36        Ok(select!(
37            md5
38            Str;
39            "eab30259ac1a92b66794f301a6ac3ff3".to_owned()
40        )),
41    )
42    .await;
43
44    g.test(
45        r#"SELECT MD5(NULL) AS md5 FROM MD5;"#,
46        Ok(select_with_null!(md5; Null)),
47    )
48    .await;
49
50    g.test(
51        r#"SELECT MD5() FROM MD5;"#,
52        Err(TranslateError::FunctionArgsLengthNotMatching {
53            name: "MD5".to_owned(),
54            expected: 1,
55            found: 0,
56        }
57        .into()),
58    )
59    .await;
60});