postal_code/
collection.rs1crate::ix!();
2
3#[derive(Builder, Debug)]
4#[builder(setter(into))]
5pub struct PostalCodeCollection {
6 #[builder(setter(each(name = "code")))]
8 codes: Vec<PostalCode>,
9}
10
11impl PostalCodeCollection {
12 pub fn len(&self) -> usize {
13 self.codes.len()
14 }
15}
16
17#[cfg(test)]
18mod postal_code_collection_tests {
19 use super::*;
20 use std::collections::HashSet;
21
22 #[test]
23 fn test_postal_code_collection() {
24 let pc1 = PostalCode::new(Country::USA, "12345").unwrap();
26 let pc2 = PostalCode::new(Country::France, "75001").unwrap();
27 let pc3 = PostalCode::new(Country::Canada, "K1A0B1").unwrap();
28
29 let collection = PostalCodeCollectionBuilder::default()
30 .code(pc1.clone())
31 .code(pc2.clone())
32 .code(pc3.clone())
33 .build()
34 .expect("All required fields set");
35
36 assert_eq!(collection.len(), 3);
37 let set: HashSet<_> = collection.codes.iter().collect();
38 assert!(set.contains(&pc1));
39 assert!(set.contains(&pc2));
40 assert!(set.contains(&pc3));
41 }
42
43 #[test]
44 fn test_postal_code_collection_empty() {
45 let collection = PostalCodeCollectionBuilder::default().build();
47 assert!(collection.is_err());
49 }
50}