image_blp/
path.rs

1use std::path::{Path, PathBuf};
2
3/// Helper to make a external mipmap path based on given root file name.
4pub 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}