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}