From 76dd2160e7e64003fd75a783a3d07fcbb01b5381 Mon Sep 17 00:00:00 2001 From: Marrub Date: Tue, 19 Feb 2019 18:01:56 -0500 Subject: [PATCH] additional tests --- src/durandal/fixed.rs | 4 +-- src/main.rs | 9 ++----- src/marathon/map.rs | 22 ++++++++--------- tests/epnt.in | Bin 0 -> 864 bytes tests/epnt.out | 56 ++++++++++++++++++++++++++++++++++++++++++ tests/epnt.rs | 12 +++++++++ tests/minf.in | Bin 0 -> 88 bytes tests/minf.rs | 19 ++++++++++++++ 8 files changed, 102 insertions(+), 20 deletions(-) create mode 100644 tests/epnt.in create mode 100644 tests/epnt.out create mode 100644 tests/epnt.rs create mode 100644 tests/minf.in create mode 100644 tests/minf.rs diff --git a/src/durandal/fixed.rs b/src/durandal/fixed.rs index 8f29a8f..ea69373 100644 --- a/src/durandal/fixed.rs +++ b/src/durandal/fixed.rs @@ -8,7 +8,7 @@ macro_rules! define_fixed_type { ( $Type:ident : $IT:ident, $UT:ident, $LT:ident, $FracBits:expr ) => { - #[derive(Serialize)] + #[derive(Clone, PartialEq, Serialize)] pub struct $Type($IT); impl $Type @@ -27,7 +27,7 @@ macro_rules! define_fixed_type { self.0 = bits as $IT } - pub fn from_bits(bits: $UT) -> Self + pub const fn from_bits(bits: $UT) -> Self { $Type(bits as $IT) } diff --git a/src/main.rs b/src/main.rs index d3f76fb..d1ae5a3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -41,10 +41,7 @@ fn dump_chunk(opt: &Options, cid: Ident, cnk: &[u8], eid: u16) -> ResultS<()> { if opt.wad_all { make_chunk(opt, cid, cnk, eid)?; - return Ok(()); - } - - if opt.wad_chunks.contains(&cid) { + } else if opt.wad_chunks.contains(&cid) { match &cid { b"PICT" => { let im = pict::load_pict(cnk)?; @@ -59,9 +56,7 @@ fn dump_chunk(opt: &Options, cid: Ident, cnk: &[u8], eid: u16) -> ResultS<()> b"term" => make_yaml(opt, &rd_array(cnk, trm::read_term)?)?, _ => (), } - } - - if opt.wad_unknown { + } else if opt.wad_unknown { make_chunk(opt, cid, cnk, eid)?; } diff --git a/src/marathon/map.rs b/src/marathon/map.rs index b82c83b..d6f5b54 100644 --- a/src/marathon/map.rs +++ b/src/marathon/map.rs @@ -154,11 +154,11 @@ pub fn read_poly(b: &[u8]) -> ResultS<(Polygon, usize)> media_l, sound, snd_amb, snd_rnd}, 128)) } -#[derive(Serialize)] +#[derive(Clone, PartialEq, Serialize)] pub struct Point { - x: Unit, - y: Unit, + pub x: Unit, + pub y: Unit, } #[derive(Debug, Serialize)] @@ -219,16 +219,16 @@ pub struct Polygon snd_rnd: ObjID, } -#[derive(Debug, Serialize)] +#[derive(Debug, PartialEq, Serialize)] pub struct Minf { - env_code: u16, - physi_id: u16, - music_id: u16, - msn_flag: MsnFlags, - env_flag: EnvFlags, - ent_flag: EntFlags, - levelnam: String, + pub env_code: u16, + pub physi_id: u16, + pub music_id: u16, + pub msn_flag: MsnFlags, + pub env_flag: EnvFlags, + pub ent_flag: EntFlags, + pub levelnam: String, } bitflags! { diff --git a/tests/epnt.in b/tests/epnt.in new file mode 100644 index 0000000000000000000000000000000000000000..b74b19bcfd37c4e49ac553f1ff8719f42302f63f GIT binary patch literal 864 zcmZY7!A`?45CqVHga)btAp~%v2vrF63v%fHe+P$rLJv9QR&39Vl(fD*&2Dzx8XMpj zEo$UbB0Ja*bRR47+1P=uT;J1=bPM^3uA%y^t?y}GgB|Bi*t@i0~ zptVn9YoDF#wS-JTLjg z{uk!qDi4diM0IJQecn*e6Z_>Fa?QNPnYrBGcwHZ^`om&g+JEr-$oC)Pb}hgE$^B3M z|K-7s^=aSP_3!j_W4+Io`PuI?yNuiGy~)$c)n)QL_0M*mm-@fC?^pVM8E?CE>K~W~ Q&;MC@guG{-evy3k|J_$mMgRZ+ literal 0 HcmV?d00001 diff --git a/tests/epnt.out b/tests/epnt.out new file mode 100644 index 0000000..7dabd23 --- /dev/null +++ b/tests/epnt.out @@ -0,0 +1,56 @@ +[ + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(4096)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(4096)}, + map::Point{x: Unit::from_bits(7168), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(7168), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(7168)}, + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(7168)}, + map::Point{x: Unit::from_bits(4096), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(4096), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(4608), y: Unit::from_bits(3072)}, + map::Point{x: Unit::from_bits(3072), y: Unit::from_bits(4608)}, + map::Point{x: Unit::from_bits(6656), y: Unit::from_bits(3072)}, + map::Point{x: Unit::from_bits(8192), y: Unit::from_bits(4608)}, + map::Point{x: Unit::from_bits(8192), y: Unit::from_bits(6656)}, + map::Point{x: Unit::from_bits(6656), y: Unit::from_bits(8192)}, + map::Point{x: Unit::from_bits(4608), y: Unit::from_bits(8192)}, + map::Point{x: Unit::from_bits(3072), y: Unit::from_bits(6656)}, + map::Point{x: Unit::from_bits(1536), y: Unit::from_bits(13312)}, + map::Point{x: Unit::from_bits(9728), y: Unit::from_bits(13312)}, + map::Point{x: Unit::from_bits(1536), y: Unit::from_bits(63488)}, + map::Point{x: Unit::from_bits(9728), y: Unit::from_bits(63488)}, + map::Point{x: Unit::from_bits(13312), y: Unit::from_bits(1536)}, + map::Point{x: Unit::from_bits(13312), y: Unit::from_bits(9728)}, + map::Point{x: Unit::from_bits(63488), y: Unit::from_bits(1536)}, + map::Point{x: Unit::from_bits(63488), y: Unit::from_bits(9728)}, + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(13312)}, + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(14336)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(13312)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(14336)}, + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(63488)}, + map::Point{x: Unit::from_bits(5120), y: Unit::from_bits(62464)}, + map::Point{x: Unit::from_bits(4096), y: Unit::from_bits(62464)}, + map::Point{x: Unit::from_bits(4096), y: Unit::from_bits(61440)}, + map::Point{x: Unit::from_bits(7168), y: Unit::from_bits(61440)}, + map::Point{x: Unit::from_bits(7168), y: Unit::from_bits(62464)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(62464)}, + map::Point{x: Unit::from_bits(6144), y: Unit::from_bits(63488)}, + map::Point{x: Unit::from_bits(13312), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(14336), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(14336), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(13312), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(63488), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(5120)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(4096)}, + map::Point{x: Unit::from_bits(61440), y: Unit::from_bits(4096)}, + map::Point{x: Unit::from_bits(61440), y: Unit::from_bits(7168)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(7168)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(63488), y: Unit::from_bits(6144)}, + map::Point{x: Unit::from_bits(61440), y: Unit::from_bits(7680)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(7680)}, + map::Point{x: Unit::from_bits(62464), y: Unit::from_bits(13312)}, + map::Point{x: Unit::from_bits(61440), y: Unit::from_bits(8704)}, + map::Point{x: Unit::from_bits(57344), y: Unit::from_bits(8704)}, + map::Point{x: Unit::from_bits(57344), y: Unit::from_bits(13312)} +] diff --git a/tests/epnt.rs b/tests/epnt.rs new file mode 100644 index 0000000..f37b1b4 --- /dev/null +++ b/tests/epnt.rs @@ -0,0 +1,12 @@ +use maraiah::{durandal::{bin, fixed::*}, marathon::map}; + +#[test] +fn read_epnt_must_process_this() +{ + assert_eq!(bin::rd_array(INPUT, map::read_epnt).unwrap(), OUTPUT.to_vec()); +} + +const INPUT: &'static [u8] = include_bytes!("epnt.in"); +const OUTPUT: [map::Point; 54] = include!("epnt.out"); + +// EOF diff --git a/tests/minf.in b/tests/minf.in new file mode 100644 index 0000000000000000000000000000000000000000..e66ab63b5720f8f6faef59644c82a42d05c91051 GIT binary patch literal 88 jcmZQzU|~Pb^6-%E`}H05b{_i?ZQT#50%yxM~M1 literal 0 HcmV?d00001 diff --git a/tests/minf.rs b/tests/minf.rs new file mode 100644 index 0000000..99e7968 --- /dev/null +++ b/tests/minf.rs @@ -0,0 +1,19 @@ +use maraiah::marathon::map; + +#[test] +fn read_minf_must_process_map0() +{ + assert_eq!(map::read_minf(INPUT).unwrap(), map::Minf{ + env_code: 0, + physi_id: 1, + music_id: 1, + msn_flag: map::MsnFlags::Repair, + env_flag: map::EnvFlags::empty(), + ent_flag: map::EntFlags::Solo | map::EntFlags::CoOp, + levelnam: "Waterloo Waterpark".to_string() + }); +} + +const INPUT: &'static [u8] = include_bytes!("minf.in"); + +// EOF