additional tests

png-branch
an 2019-02-19 18:01:56 -05:00
parent 1f81a5b043
commit 76dd2160e7
8 changed files with 102 additions and 20 deletions

View File

@ -8,7 +8,7 @@ macro_rules! define_fixed_type {
( (
$Type:ident : $IT:ident, $UT:ident, $LT:ident, $FracBits:expr $Type:ident : $IT:ident, $UT:ident, $LT:ident, $FracBits:expr
) => { ) => {
#[derive(Serialize)] #[derive(Clone, PartialEq, Serialize)]
pub struct $Type($IT); pub struct $Type($IT);
impl $Type impl $Type
@ -27,7 +27,7 @@ macro_rules! define_fixed_type {
self.0 = bits as $IT self.0 = bits as $IT
} }
pub fn from_bits(bits: $UT) -> Self pub const fn from_bits(bits: $UT) -> Self
{ {
$Type(bits as $IT) $Type(bits as $IT)
} }

View File

@ -41,10 +41,7 @@ fn dump_chunk(opt: &Options, cid: Ident, cnk: &[u8], eid: u16) -> ResultS<()>
{ {
if opt.wad_all { if opt.wad_all {
make_chunk(opt, cid, cnk, eid)?; make_chunk(opt, cid, cnk, eid)?;
return Ok(()); } else if opt.wad_chunks.contains(&cid) {
}
if opt.wad_chunks.contains(&cid) {
match &cid { match &cid {
b"PICT" => { b"PICT" => {
let im = pict::load_pict(cnk)?; 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)?)?, b"term" => make_yaml(opt, &rd_array(cnk, trm::read_term)?)?,
_ => (), _ => (),
} }
} } else if opt.wad_unknown {
if opt.wad_unknown {
make_chunk(opt, cid, cnk, eid)?; make_chunk(opt, cid, cnk, eid)?;
} }

View File

@ -154,11 +154,11 @@ pub fn read_poly(b: &[u8]) -> ResultS<(Polygon, usize)>
media_l, sound, snd_amb, snd_rnd}, 128)) media_l, sound, snd_amb, snd_rnd}, 128))
} }
#[derive(Serialize)] #[derive(Clone, PartialEq, Serialize)]
pub struct Point pub struct Point
{ {
x: Unit, pub x: Unit,
y: Unit, pub y: Unit,
} }
#[derive(Debug, Serialize)] #[derive(Debug, Serialize)]
@ -219,16 +219,16 @@ pub struct Polygon
snd_rnd: ObjID, snd_rnd: ObjID,
} }
#[derive(Debug, Serialize)] #[derive(Debug, PartialEq, Serialize)]
pub struct Minf pub struct Minf
{ {
env_code: u16, pub env_code: u16,
physi_id: u16, pub physi_id: u16,
music_id: u16, pub music_id: u16,
msn_flag: MsnFlags, pub msn_flag: MsnFlags,
env_flag: EnvFlags, pub env_flag: EnvFlags,
ent_flag: EntFlags, pub ent_flag: EntFlags,
levelnam: String, pub levelnam: String,
} }
bitflags! { bitflags! {

BIN
tests/epnt.in Normal file

Binary file not shown.

56
tests/epnt.out Normal file
View File

@ -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)}
]

12
tests/epnt.rs Normal file
View File

@ -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

BIN
tests/minf.in Normal file

Binary file not shown.

19
tests/minf.rs Normal file
View File

@ -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