1use crate::data_manipulation::anonymizable::Anonymizable;
2use crate::test::adult::Adult;
3use crate::test::adult_large::AdultLarge;
4use crate::test::csv_importer::{CsvImporter, EnrichedRow};
5use crate::test::environment::{Dataset, Datasets, Environment};
6
7use crate::config::Config;
8use csv::Reader;
9use serde::de::DeserializeOwned;
10
11pub fn start_tests(conf_file: &String) {
17 let config = Config::new(conf_file);
18 let environments = prepare_environments(&config);
19 environments.into_iter().for_each(|env| match env.dataset {
20 Datasets::Adult(dataset) => create_test::<Adult>(env, dataset),
21 Datasets::AdultLarge(dataset) => create_test::<AdultLarge>(env, dataset),
22 Datasets::Mueller(dataset) => create_test::<EnrichedRow>(env, dataset),
23 });
24}
25
26fn create_test<A: Anonymizable + DeserializeOwned>(env: Environment, dataset: Dataset) {
27 println!("Reading file {}", dataset.path);
28 let file = Reader::from_path(dataset.path).unwrap();
29 let mut csv_importer = CsvImporter::new(file);
30 match csv_importer.convert::<A>(env) {
31 Ok(_) => {}
32 Err(e) => {
33 println!("{}", e)
34 }
35 }
36}
37
38const DATASETS: [Datasets; 3] = [
39 Datasets::Adult(Dataset {
40 path: "datasets/Adult_1_numeric_only_class_50K.csv",
41 export: "exports/adult",
42 }),
43 Datasets::AdultLarge(Dataset {
44 path: "datasets/Adult_2_numerical_categorical_class_50K_drift.csv",
45 export: "exports/adultLarge",
46 }),
47 Datasets::Mueller(Dataset {
48 path: "datasets/steps-converted.csv",
49 export: "exports/steps",
50 }),
51];
52
53fn prepare_environments(config: &Config) -> Vec<Environment> {
54 let mut environments: Vec<Environment> = vec![];
55 DATASETS.iter().copied().for_each(|dataset| {
56 config.k.iter().copied().for_each(|k| {
57 config.l.iter().copied().for_each(|l| {
58 config.c.iter().copied().for_each(|c| {
59 config.diff_thres.iter().copied().for_each(|diff_thres| {
60 config.eps.iter().copied().for_each(|eps| {
61 config.delta.iter().copied().for_each(|delta| {
62 config.noise_thr.iter().copied().for_each(|noise_thr| {
63 environments.push(Environment::new(
64 k,
65 k * 4,
66 l,
67 c,
68 diff_thres,
69 eps,
70 delta as u128,
71 noise_thr,
72 dataset,
73 config.publish_remaining_tuples,
74 ))
75 })
76 })
77 })
78 })
79 })
80 })
81 })
82 });
83
84 environments
85}