From 4b6166f8d028846b93393960b9d6ebf12f2a6fae Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Tue, 16 Apr 2024 22:08:22 -0400 Subject: [PATCH] Add invalid data test for Texture --- src/tex.rs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/tex.rs b/src/tex.rs index bf4894e..b69a5ef 100644 --- a/src/tex.rs +++ b/src/tex.rs @@ -82,7 +82,7 @@ impl Texture { /// Reads an existing TEX file pub fn from_existing(buffer: ByteSpan) -> Option { let mut cursor = Cursor::new(buffer); - let header = TexHeader::read(&mut cursor).unwrap(); + let header = TexHeader::read(&mut cursor).ok()?; // TODO: Adapted from Lumina, but this really can be written better... let mut texture_data_size = vec![0; min(13, header.mip_levels as usize)]; @@ -141,3 +141,21 @@ impl Texture { }) } } + +#[cfg(test)] +mod tests { + use std::fs::read; + use std::path::PathBuf; + + use super::*; + + #[test] + fn test_invalid() { + let mut d = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + d.push("resources/tests"); + d.push("random"); + + // Feeding it invalid data should not panic + Texture::from_existing(&read(d).unwrap()); + } +}