From 0f42459d7bf8d1e8f5809520cc6e8b672375338b Mon Sep 17 00:00:00 2001 From: Matteo Cypriani Date: Wed, 7 Dec 2016 23:48:07 -0500 Subject: [PATCH] Add minimalistic integration tests --- src/metadata/mod.rs | 5 ++++- tests/minimal_v1.nrg | Bin 0 -> 16 bytes tests/minimal_v2.nrg | Bin 0 -> 20 bytes tests/nrg_v1.rs | 19 +++++++++++++++++++ tests/nrg_v2.rs | 19 +++++++++++++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 tests/minimal_v1.nrg create mode 100644 tests/minimal_v2.nrg create mode 100644 tests/nrg_v1.rs create mode 100644 tests/nrg_v2.rs diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 3a10381..ea9ba29 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -73,10 +73,13 @@ pub fn read_nrg_metadata(fd: &mut File) -> Result { /// Determines the NRG format of an open NRG image `fd` of file `file_size`. /// +/// `fd`'s offset at call-time doesn't matter, as this function will seek to +/// read the relevant data. +/// /// The offset is left after the main chunk ID, therefore the calling function /// can read the first data chunk's offset (32 bits for NRG v1 or 64 bits for /// NRG v2) directly without seeking. -fn read_nrg_version(fd: &mut File, file_size: u64) -> Result { +pub fn read_nrg_version(fd: &mut File, file_size: u64) -> Result { if file_size < 12 { // Input file too small return Err(NrgError::NrgFormat( diff --git a/tests/minimal_v1.nrg b/tests/minimal_v1.nrg new file mode 100644 index 0000000000000000000000000000000000000000..65aa21cb0a4f380b1cc223ab3a0785a00bc3f032 GIT binary patch literal 16 TcmZ?ub5Udf0zcOve-I4-79j#H literal 0 HcmV?d00001 diff --git a/tests/minimal_v2.nrg b/tests/minimal_v2.nrg new file mode 100644 index 0000000000000000000000000000000000000000..0b9fa15553c97691044fe2f2e1a0615b17c01c3e GIT binary patch literal 20 UcmZ?ub5Udf0zcOvQxFXT03GWB6951J literal 0 HcmV?d00001 diff --git a/tests/nrg_v1.rs b/tests/nrg_v1.rs new file mode 100644 index 0000000..006d045 --- /dev/null +++ b/tests/nrg_v1.rs @@ -0,0 +1,19 @@ +extern crate nrgrip; +use nrgrip::metadata; +use std::fs::File; +use std::io::{Seek, SeekFrom}; +use std::path::PathBuf; + +#[test] +fn nrg_format() { + let mut img = PathBuf::new(); + img.push("tests"); + img.push("minimal_v1.nrg"); + let mut fd = File::open(img) + .expect("File::open()"); + let size = fd.seek(SeekFrom::End(0)) + .expect("fd.seek()"); + let ver = metadata::read_nrg_version(&mut fd, size) + .expect("read_nrg_version()"); + assert_eq!(ver, 1); +} diff --git a/tests/nrg_v2.rs b/tests/nrg_v2.rs new file mode 100644 index 0000000..c43c2d9 --- /dev/null +++ b/tests/nrg_v2.rs @@ -0,0 +1,19 @@ +extern crate nrgrip; +use nrgrip::metadata; +use std::fs::File; +use std::io::{Seek, SeekFrom}; +use std::path::PathBuf; + +#[test] +fn nrg_format() { + let mut img = PathBuf::new(); + img.push("tests"); + img.push("minimal_v2.nrg"); + let mut fd = File::open(img) + .expect("File::open()"); + let size = fd.seek(SeekFrom::End(0)) + .expect("fd.seek()"); + let ver = metadata::read_nrg_version(&mut fd, size) + .expect("read_nrg_version()"); + assert_eq!(ver, 2); +}