use bsru::difficulty::Difficulty; use bsru::info::Beatmap; use std::fs; #[test] #[ignore] fn parse_beatmaps() { let paths = fs::read_dir("test_maps").unwrap().filter_map(|result| { if let Ok(dir) = result { if dir.path().is_dir() { return Some(dir.path()); } } None }); for path in paths { println!("{path:?}"); let mut info_path = path.clone(); info_path.push("Info.dat"); let info_file = fs::File::open(&info_path).expect("Map missing info file"); let map: Beatmap = serde_json::from_reader(info_file).expect("Invalid info file"); for set in map.difficulty_sets { println!("\t{:?}", set.characteristic); for dif in set.difficulties { println!("\t\t{} ({:?})", dif.name, dif.rank); let mut dif_path = path.clone(); dif_path.push(dif.file); let dif_file = fs::File::open(&dif_path).expect("Map missing difficulty file"); let _: Difficulty = serde_json::from_reader(dif_file).expect("Invalid difficulty file"); } } } }