1pub mod parameter;
2pub mod selector;
3
4#[cfg(test)]
5mod tests {
6 use std::collections::HashMap;
7
8 use crate::{
9 parameter::{
10 dataset::{strings::Strings, ParameterDataset},
11 table::ParameterTable,
12 },
13 selector::grid_search::GridSearch,
14 };
15
16 #[test]
17 fn test_param_on_grid() {
18 let mut datasets = HashMap::new();
19 let dataset = ParameterDataset::Strings(
20 Strings::new(
21 ["foo", "bar"]
22 .into_iter()
23 .map(ToString::to_string)
24 .collect(),
25 )
26 .unwrap(),
27 );
28 datasets.insert(String::from("hello"), dataset);
29 let dataset = ParameterDataset::Strings(
30 Strings::new(["1", "2"].into_iter().map(ToString::to_string).collect()).unwrap(),
31 );
32 datasets.insert(String::from("world"), dataset);
33 let table = ParameterTable::new_unordered(datasets);
34
35 let grid_search = GridSearch::new(table.spaces());
36 for indices in grid_search {
37 for (k, v) in table.values(indices.into_iter()) {
38 print!("({k}, {v}), ");
39 }
40 println!();
41 }
42
43 let mut grid_search = GridSearch::new(table.spaces());
44
45 let indices = grid_search.next().unwrap();
46 assert_eq!(indices, [0, 0]);
47
48 let indices = grid_search.next().unwrap();
49 assert_eq!(indices, [0, 1]);
50
51 let indices = grid_search.next().unwrap();
52 assert_eq!(indices, [1, 0]);
53
54 let indices = grid_search.next().unwrap();
55 assert_eq!(indices, [1, 1]);
56
57 assert!(grid_search.next().is_none());
58 }
59}