-
Notifications
You must be signed in to change notification settings - Fork 0
/
color.rs
54 lines (49 loc) · 1.47 KB
/
color.rs
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
#[derive(PartialEq, Clone, Debug)]
pub enum Color {
Red,
Green,
Blue,
Yellow,
Orange,
Pink,
Custom([f32; 4]),
}
impl Default for Color {
fn default() -> Self {
Color::Red
}
}
impl Into<[f32; 4]> for Color {
fn into(self) -> [f32; 4] {
match self {
Color::Red => [1.0, 0.36, 0.2, 1.0],
Color::Green => [0.0, 0.6, 0.2, 1.0],
Color::Blue => [0.3, 0.47, 1.0, 1.0],
Color::Yellow => [1.0, 0.83, 0.2, 1.0],
Color::Orange => [1.0, 0.6, 0.2, 1.0],
Color::Pink => [0.8, 0.0, 0.8, 1.0],
Color::Custom(color) => color,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn into() {
let red = [1.0, 0.36, 0.2, 1.0];
let green = [0.0, 0.6, 0.2, 1.0];
let blue = [0.3, 0.47, 1.0, 1.0];
let yellow = [1.0, 0.83, 0.2, 1.0];
let orange = [1.0, 0.6, 0.2, 1.0];
let pink = [0.8, 0.0, 0.8, 1.0];
let custom = [0.1, 0.2, 0.3, 0.4];
assert_eq!(Into::<[f32; 4]>::into(Color::Red), red);
assert_eq!(Into::<[f32; 4]>::into(Color::Green), green);
assert_eq!(Into::<[f32; 4]>::into(Color::Blue), blue);
assert_eq!(Into::<[f32; 4]>::into(Color::Yellow), yellow);
assert_eq!(Into::<[f32; 4]>::into(Color::Orange), orange);
assert_eq!(Into::<[f32; 4]>::into(Color::Pink), pink);
assert_eq!(Into::<[f32; 4]>::into(Color::Custom(custom)), custom);
}
}