1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
use {
    crate::*,
    gluesql_core::{ast_builder::*, executor::Payload, prelude::Value::*},
    std::f64::consts::*,
};

test_case!(conversion, async move {
    let glue = get_glue!();

    // Create table - Number
    let actual = table("Number")
        .create_table()
        .add_column("input INTEGER")
        .add_column("number FLOAT")
        .execute(glue)
        .await;
    let expected = Ok(Payload::Create);
    test(actual, expected);

    // Insert a row into the Number
    let actual = table("Number")
        .insert()
        .values(vec!["0, 0.0", "90, 90.0", "180, 180.0", "360, 360.0"])
        .execute(glue)
        .await;
    let expected = Ok(Payload::Insert(4));
    test(actual, expected);

    // Example Using DEGREES
    let actual = table("Number")
        .select()
        .project("input")
        .project(degrees("number"))
        .project(col("number").degrees())
        .execute(glue)
        .await;
    let expected = Ok(select!(
        input   | r#"DEGREES("number")"#    | r#"DEGREES("number")"#
        I64     | F64                       | F64;
        0         0.0                         0.0;
        90        5156.620156177409           5156.620156177409;
        180       10313.240312354817          10313.240312354817;
        360       20626.480624709635          20626.480624709635
    ));
    test(actual, expected);

    // Example Using RADIANS
    let actual = table("Number")
        .select()
        .project("input")
        .project(radians("number"))
        .project(col("number").radians())
        .execute(glue)
        .await;
    let expected = Ok(select!(
        input   | r#"RADIANS("number")"#    | r#"RADIANS("number")"#
        I64     | F64                       | F64;
        0         0.0                         0.0;
        90        FRAC_PI_2                   FRAC_PI_2;
        180       PI                          PI;
        360       TAU                         TAU
    ));
    test(actual, expected);
});