summaryrefslogtreecommitdiff
path: root/schist_desktop_gui/src/gui/components/balances_view/view_group_names.rs
blob: 18ddf0b7a4f1e259a0decc92c2047e17a5e1300e (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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
use itertools::Itertools;
use schist_models::Bucket;

use crate::gui::components::Text;

pub fn view_group_names(buckets: Vec<Bucket>) -> Vec<Text> {
    buckets
        .iter()
        .map(|b| b.group.as_str())
        .unique()
        .map(Text::new)
        .collect()
}

#[cfg(test)]
mod test {
    use schist_fakes::bucket::make_fake_bucket_builder;

    use crate::gui::components::{balances_view::view_group_names::view_group_names, text::Text};

    #[test]
    fn preserves_order() {
        let buckets = vec![
            make_fake_bucket_builder(0)
                .group(String::from("hydrogen"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(1)
                .group(String::from("helium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(2)
                .group(String::from("lithium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(3)
                .group(String::from("beryllium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(4)
                .group(String::from("boron"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(5)
                .group(String::from("carbon"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(6)
                .group(String::from("nitrogen"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(7)
                .group(String::from("oxygen"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("flourine"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("flourine"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("neon"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("magnesium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("aluminium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("silicon"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("phosphorus"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("sulphur"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("chlorine"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(8)
                .group(String::from("argon"))
                .build()
                .unwrap(),
        ];
        let group_names = view_group_names(buckets);
        assert_eq!(17, group_names.len());
        assert_eq!(group_names[0], Text::new("hydrogen"));
        assert_eq!(group_names[1], Text::new("helium"));
        assert_eq!(group_names[2], Text::new("lithium"));
        assert_eq!(group_names[3], Text::new("beryllium"));
        assert_eq!(group_names[4], Text::new("boron"));
        assert_eq!(group_names[5], Text::new("carbon"));
        assert_eq!(group_names[6], Text::new("nitrogen"));
        assert_eq!(group_names[7], Text::new("oxygen"));
        assert_eq!(group_names[8], Text::new("flourine"));
        assert_eq!(group_names[9], Text::new("neon"));
        assert_eq!(group_names[10], Text::new("magnesium"));
        assert_eq!(group_names[11], Text::new("aluminium"));
        assert_eq!(group_names[12], Text::new("silicon"));
        assert_eq!(group_names[13], Text::new("phosphorus"));
        assert_eq!(group_names[14], Text::new("sulphur"));
        assert_eq!(group_names[15], Text::new("chlorine"));
        assert_eq!(group_names[16], Text::new("argon"));
    }

    #[test]
    fn removes_duplicates() {
        let buckets = vec![
            make_fake_bucket_builder(0)
                .group(String::from("hydrogen"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(1)
                .group(String::from("helium"))
                .build()
                .unwrap(),
            make_fake_bucket_builder(2)
                .group(String::from("hydrogen"))
                .build()
                .unwrap(),
        ];
        let group_names = view_group_names(buckets);
        assert_eq!(
            vec![
                Text::new("hydrogen"),
                Text::new("helium"),
            ],
            group_names
        );
    }
}