nix_compat/test/mod.rs
1//! Test helpers
2
3#[cfg(feature = "wire")]
4pub mod wire;
5
6/// Test helper to create a [`BTreeMap`] with keys and values that support [`FromStr`]
7///
8/// # Examples
9/// ```
10/// use std::collections::BTreeMap;
11/// use std::net::IpAddr;
12/// use std::path::PathBuf;
13/// use nix_compat::btree_map;
14///
15/// let mut m : BTreeMap<IpAddr, PathBuf> = BTreeMap::new();
16/// m.insert("127.0.0.1".parse().unwrap(), "/nix/store".parse().unwrap());
17/// m.insert("192.168.1.1".parse().unwrap(), "/nix/var".parse().unwrap());
18///
19/// let m2 : BTreeMap<IpAddr, PathBuf> = btree_map![
20/// "127.0.0.1" => "/nix/store",
21/// "192.168.1.1" => "/nix/var",
22/// ];
23/// assert_eq!(m, m2);
24/// ```
25///
26/// [`BTreeMap`]: std::collections::BTreeMap
27/// [`FromStr`]: std::str::FromStr
28#[macro_export]
29macro_rules! btree_map {
30 () => { std::collections::BTreeMap::new() };
31 ($($k:expr => $v:expr),+ $(,)?) => {{
32 let mut ret = std::collections::BTreeMap::new();
33 $(
34 ret.insert($k.parse().unwrap(), $v.parse().unwrap());
35 )+
36 ret
37 }};
38}
39
40/// Test helper to create a [`BTreeSet`] with values that support [`FromStr`]
41///
42/// # Examples
43/// ```
44/// use std::collections::BTreeSet;
45/// use std::net::IpAddr;
46/// use nix_compat::btree_set;
47///
48/// let mut m : BTreeSet<IpAddr> = BTreeSet::new();
49/// m.insert("127.0.0.1".parse().unwrap());
50/// m.insert("192.168.1.1".parse().unwrap());
51///
52/// let m2 : BTreeSet<IpAddr> = btree_set![
53/// "127.0.0.1",
54/// "192.168.1.1",
55/// ];
56/// assert_eq!(m, m2);
57/// ```
58///
59/// [`BTreeSet`]: std::collections::BTreeSet
60/// [`FromStr`]: std::str::FromStr
61#[macro_export]
62macro_rules! btree_set {
63 () => { std::collections::BTreeSet::new() };
64 ($($v:expr),+ $(,)?) => {{
65 let mut ret = std::collections::BTreeSet::new();
66 $(
67 ret.insert($v.parse().unwrap());
68 )+
69 ret
70 }};
71}
72
73/// Test helper to create a [`HashSet`] with values that support [`FromStr`]
74///
75/// # Examples
76/// ```
77/// use std::collections::HashSet;
78/// use std::net::IpAddr;
79/// use nix_compat::hash_set;
80///
81/// let mut m : HashSet<IpAddr> = HashSet::new();
82/// m.insert("127.0.0.1".parse().unwrap());
83/// m.insert("192.168.1.1".parse().unwrap());
84///
85/// let m2 : HashSet<IpAddr> = hash_set![
86/// "127.0.0.1",
87/// "192.168.1.1",
88/// ];
89/// assert_eq!(m, m2);
90/// ```
91///
92/// [`HashSet`]: std::collections::HashSet
93/// [`FromStr`]: std::str::FromStr
94#[macro_export]
95macro_rules! hash_set {
96 () => { std::collections::HashSet::new() };
97 ($($v:expr),+ $(,)?) => {{
98 let mut ret = std::collections::HashSet::new();
99 $(
100 ret.insert($v.parse().unwrap());
101 )+
102 ret
103 }};
104}