1use std::path::{Path, PathBuf};
2
3pub fn make_mipmap_path<Q>(path: Q, i: usize) -> Option<PathBuf>
5where
6 Q: AsRef<Path>,
7{
8 let mut base = path.as_ref().parent()?.join(path.as_ref().file_stem()?);
9 let extension = format!("b{:02}", i);
10 base.set_extension(extension);
11 Some(base)
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17
18 #[test]
19 fn test_blp0_path() {
20 assert_eq!(
21 make_mipmap_path("test.blp", 0).expect("path"),
22 Path::new("test.b00")
23 );
24 assert_eq!(
25 make_mipmap_path("/root/dir/test.blp", 2).expect("path"),
26 Path::new("/root/dir/test.b02")
27 );
28 assert_eq!(
29 make_mipmap_path("/root/dir/test.blp", 14).expect("path"),
30 Path::new("/root/dir/test.b14")
31 );
32 }
33}