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
);
}
}
|