1type Result<T> = std::result::Result<T, Box<dyn std::error::Error>>;
2
3mod cube;
4pub use cube::Cube;
5
6mod lut;
7pub use lut::Lut;
8
9#[cfg(test)]
10mod tests {
11 use std::fs::File;
12
13 use crate::{Cube, Lut};
14
15 #[test]
16 fn basics() {
17 let c1 = Cube::one_d(3);
18 assert_eq!(c1.dim(), 1);
19 assert_eq!(c1.r_len(), 3 * 3);
20
21 let c3 = Cube::three_d(75);
22 assert_eq!(c3.dim(), 3);
23 assert_eq!(c3.r_len(), 75 * 75 * 75 * 3);
24 }
25
26 #[test]
27 fn black_magic() {
28 let mut r = std::io::BufReader::new(File::open("/Library/Application Support/Blackmagic Design/DaVinci Resolve/LUT/VFX IO/Linear to Cineon Log.cube").unwrap());
29 let lut = Lut::parse(&mut r).expect("lut");
30 assert_eq!(lut.cube().dim(), 1);
31 assert_eq!(lut.cube().size(), 4096);
32
33 let mut r = std::io::BufReader::new(File::open("/Library/Application Support/Blackmagic Design/DaVinci Resolve/LUT/ACES/LMT ACES v0.1.1.cube").unwrap());
34 let lut = Lut::parse(&mut r).expect("lut");
35 assert_eq!(lut.cube().dim(), 3);
36 assert_eq!(lut.cube().size(), 65);
37 let shaper = lut.shaper().unwrap();
38 assert_eq!(shaper.dim(), 1);
39 assert_eq!(shaper.size(), 4095);
40 println!("comments:\n{}", lut.comments());
41 }
42
43 }