1extern crate tokio;
2
3#[macro_use]
4extern crate lazy_static;
5
6mod cursor_ext;
7pub mod pak;
8
9use pak::*;
10
11#[cfg(test)]
12mod tests {
13 use std::{fs::File, io::{Write, Read}};
14
15 use super::pak_reader::PakReader;
16 use super::pak_file::PakFile;
17
18 lazy_static! {
19 static ref TEST_FILE_BUFFER: Vec<u8> = get_test_buffer();
20 }
21
22 fn dump_buffer_to_file(name: &str, buffer: &Vec<u8>) {
23 let mut file = File::create(name).unwrap();
24 file.write_all(buffer.as_slice());
25 }
26
27 fn get_test_buffer() -> Vec<u8> {
28 let mut buffer = Vec::new();
29 let mut file = File::open("test-paks/pakchunk0-WindowsNoEditor.pak").unwrap();
30
31 file.read_to_end(&mut buffer).unwrap();
32 return buffer;
33 }
34
35 #[tokio::test]
36 async fn read_pak_header() {
37 let mut reader = PakReader::new(TEST_FILE_BUFFER.clone());
38 reader.get_pak_info().await.unwrap();
39 }
40
41 #[tokio::test]
42 async fn read_pak_data() {
43 let pak = PakFile::from_memory(TEST_FILE_BUFFER.clone()).await.unwrap();
44 }
45
46 #[tokio::test]
47 async fn read_pak_entry_data_uncompressed() {
48 let mut pak = PakFile::from_memory(TEST_FILE_BUFFER.clone()).await.unwrap();
49 let entry_data = pak.get_entry_data("DeadByDaylight/Content/Blueprints/Props/05-Suburbs/BP_Garbage1.uasset").await.unwrap().unwrap();
50 dump_buffer_to_file("test-data/test-uncompressed.dat", &entry_data);
51 }
52
53 #[tokio::test]
54 async fn read_pak_entry_data_lzib() {
55 let mut pak = PakFile::from_memory(TEST_FILE_BUFFER.clone()).await.unwrap();
56 let entry_data = pak.get_entry_data("DeadByDaylight/Config/DefaultGameUserSettings.ini").await.unwrap().unwrap();
57 dump_buffer_to_file("test-data/test-zlib.dat", &entry_data);
58 }
59}