aboutsummaryrefslogtreecommitdiff
path: root/development/libs/barrel/src/tests/common/mod.rs
blob: bf3aa2a7af1b878a0af513dc944a01a17fdc8d0e (plain)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* Include some external tests */
mod cloning;
mod utils;

#[cfg(all(feature = "sqlite3", feature = "pg", feature = "mysql"))]
mod runtime;

use crate::types::{BaseType, Type, WrappedDefault};
use crate::Migration;

#[test]
fn create_multiple_tables() {
    let mut migr = Migration::new();
    migr.create_table("foo", |_| {});
    migr.create_table("bar", |_| {});

    assert!(migr.changes.len() == 2);
}

#[test]
fn create_table_if_not_exists() {
    let mut migr = Migration::new();
    migr.create_table_if_not_exists("foo", |_| {});

    assert!(migr.changes.len() == 1);
}

#[test]
fn pin_public_api() {
    // The best sql type because it's very queer 🏳️‍🌈
    let tt = Type::new(BaseType::Custom("GAY"));

    assert_eq!(tt.nullable, false);
    assert_eq!(tt.indexed, false);
    assert_eq!(tt.unique, false);
    assert_eq!(tt.increments, false);
    assert_eq!(tt.default, None);
    assert_eq!(tt.size, None);
    assert_eq!(tt.inner, BaseType::Custom("GAY"));
}

#[test]
fn pin_struct_layout() {
    // The best sql type because it's very queer 🏳️‍🌈
    let tt = Type {
        nullable: false,
        indexed: false,
        primary: false,
        unique: false,
        increments: false,
        default: None,
        size: None,
        inner: BaseType::Custom("GAY"),
    };

    assert_eq!(tt.nullable, false);
    assert_eq!(tt.indexed, false);
    assert_eq!(tt.primary, false);
    assert_eq!(tt.unique, false);
    assert_eq!(tt.increments, false);
    assert_eq!(tt.default, None);
    assert_eq!(tt.size, None);
    assert_eq!(tt.inner, BaseType::Custom("GAY"));
}

#[test]
fn default_render_anytext() {
    use self::WrappedDefault::*;
    assert_eq!(format!("{}", AnyText("hello".into())), "hello".to_owned());
}

#[test]
fn default_render_integer() {
    use self::WrappedDefault::*;
    assert_eq!(format!("{}", Integer(42)), "42".to_owned());
}

#[test]
fn default_render_float() {
    use self::WrappedDefault::*;
    assert_eq!(format!("{}", Float(42000.0)), "42000".to_owned());
}

#[test]
fn default_render_double() {
    use self::WrappedDefault::*;
    assert_eq!(
        format!("{}", Double(123456789.123456789)),
        "123456789.12345679".to_owned()
    );
}

#[test]
fn default_render_uuid() {
    use self::WrappedDefault::*;
    assert_eq!(
        format!("{}", UUID("b616ab2a-e13c-11e8-9f32-f2801f1b9fd1".into())),
        "b616ab2a-e13c-11e8-9f32-f2801f1b9fd1".to_owned()
    );
}

// #[test]
// fn default_render_date() {
//     use self::WrappedDefault::*;
//     assert_eq!(format!("{}", Date(SystemTime::now())), "".to_owned());
// }

#[test]
fn default_render_binary() {
    use self::WrappedDefault::*;
    assert_eq!(
        format!(
            "{}",
            Binary(&[
                0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF
            ])
        ),
        "[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]".to_owned()
    );
}

// #[test]
// fn default_render_array() {
//     use self::WrappedDefault::*;
//     assert_eq!(
//         format!("{}", Array(vec![Type::new(BaseType::Custom("GAY"))])),
//         "".to_owned()
//     );
// }