libcbt/
lib.rs

1#![no_std]
2
3extern crate alloc;
4
5pub mod types;
6pub mod common;
7
8static SUPPORTED_VERSIONS: [u8; 1] = [1];
9static CURRENT_VERSION: u8 = 1;
10
11#[cfg(test)]
12mod tests {
13    use alloc::vec;
14    use crate::common::CBT;
15    use super::*;
16
17    #[test]
18    fn create_two_identical_empty_cbts() {
19        let cbt_a = CBT::new_empty(10, 10, false);
20        let cbt_b = CBT::new_empty(10, 10, false);
21        assert_eq!(cbt_a, cbt_b);
22    }
23
24    #[test]
25    fn create_two_identical_nonempty_cbts() {
26        let mut cbt_a = CBT::new_with_capacity(10, 10, 10, false);
27        let mut cbt_b = CBT::new_with_capacity(10, 10, 10, false);
28        let data = vec![5; 10 * 10];
29        cbt_a.fill_frame(0, &data);
30        cbt_b.fill_frame(0, &data);
31        assert_eq!(cbt_a, cbt_b);
32    }
33
34    #[test]
35    fn create_two_different_nonempty_cbts() {
36        let mut cbt_a = CBT::new_with_capacity(10, 10, 10, false);
37        let mut cbt_b = CBT::new_with_capacity(10, 10, 10, false);
38        let data = vec![5; 10 * 10];
39        cbt_a.fill_frame(0, &data);
40        cbt_b.fill_frame(1, &data);
41        assert_ne!(cbt_a, cbt_b);
42    }
43
44    #[test]
45    fn test_reader_vs_same_data() {
46        let cbt_a = CBT::new_with_capacity(10, 10, 10, false);
47        let reader = cbt_a.get_reader(false);
48        assert_eq!(reader.frames, cbt_a.frames);
49    }
50
51    #[test]
52    fn test_reader_vs_different_data() {
53        let cbt_a = CBT::new_with_capacity(10, 10, 10, false);
54        let reader = cbt_a.get_reader(true);
55        assert_ne!(reader.frames, cbt_a.frames);
56    }
57
58    #[test]
59    fn check_length_of_rgb_frame() {
60        let cbt_a = CBT::new_with_capacity(10, 10, 10, false);
61        let reader = cbt_a.get_reader(false);
62        assert_eq!(reader.frames[0].len(), 10 * 10 * 3);
63    }
64
65    #[test]
66    fn check_length_of_rgba_frame() {
67        let cbt_a = CBT::new_with_capacity(10, 10, 10, true);
68        let reader = cbt_a.get_reader(true);
69        assert_eq!(reader.frames[0].len(), 10 * 10 * 4);
70    }
71
72    #[test]
73    fn save_and_reopen() {
74        let mut cbt = CBT::new_with_capacity(10, 10, 10, false);
75        cbt.fill_frame(0, &vec![5; 10 * 10 * 3]);
76        let saved_cbt = cbt.to_file_data();
77        let mut cbt_intheory_same = CBT::new_with_capacity(10, 10, 10, false);
78        cbt_intheory_same.fill_frame(0, &vec![5; 10 * 10 * 3]);
79        let reopened_cbt = CBT::new_from_bytes(&saved_cbt).unwrap();
80        assert_eq!(reopened_cbt, cbt_intheory_same);
81    }
82}