From 16c52a121169fc5b650b6f0f236e2262cbf9e10c Mon Sep 17 00:00:00 2001 From: Marrub Date: Mon, 4 Mar 2019 07:28:11 -0500 Subject: [PATCH] unit test for terminals --- tests/data/term.in | Bin 0 -> 6275 bytes tests/data/term.out | 165 ++++++++++++++++++++++++++++++++++++++++++++ tests/term.rs | 27 ++++++++ 3 files changed, 192 insertions(+) create mode 100644 tests/data/term.in create mode 100644 tests/data/term.out create mode 100644 tests/term.rs diff --git a/tests/data/term.in b/tests/data/term.in new file mode 100644 index 0000000000000000000000000000000000000000..7efcfd7c6dc6cc83ace6a5b5e5bf936b9de0b79b GIT binary patch literal 6275 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\ninformation retrieval aspect 30-f\n\n~eibat weapo` 3941\nsiklicar 21`perie1ces\nclwaa\n\n".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Logoff, + pdata: 1610, + lines: 1, + text: "\n".to_string() + } + ], + faces: vec![] + }, + trm::Terminal { + lines: 22, + groups: vec![ + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Unfinished, + pdata: 253, + lines: 0, + text: "".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Logon, + pdata: 1619, + lines: 1, + text: "".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Pict, + pdata: 10007, + lines: 16, + text: "\n\n\nthousands are sailing\nthe same self\t\tthe only self\n\nself willed the peril of a thousand fates\n\na line of infinite ends\t\tfinite finishing\nthe one remains oblique and pure\n\narching to the single point of consciousness\n\nfind yourself\nstarting back\n".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Logoff, + pdata: 1619, + lines: 1, + text: "".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::TeleInter, + pdata: 1, + lines: 1, + text: "".to_string() + } + ], + faces: vec![ + trm::Face { + start: 6, + face: 0, + color: 1 + } + ] + }, + trm::Terminal { + lines: 22, + groups: vec![ + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Unfinished, + pdata: 0, + lines: 0, + text: "".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Logon, + pdata: 1619, + lines: 1, + text: "".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Pict, + pdata: 10007, + lines: 84, + text: "534954210001000034EE724C6175020000000016\n000000001E48617473204F666620746F20456967\n6874204E696E657465656E2E736974946AAA0000\n0000000000000000000000000000000000000000\n00000000FFFFFFFF53495444534954210100AE1A\nCAD4AE1ACAD40000000000003468000000000000\n34680000CAF90000000000004A21534954210001\n00003468724C617502000000001600000D0D1A48\n617473204F666620746F204569676874204E696E\n657465656E0001537E94897D0000000000000000\n000000000000000000000000000000000000FFFF\nFFFF7363653232362EB00100AE1AA710AE1ACAC4\n0000087A0000738C0000057100002E7177DCF747\n000000000000EFB60B005D796C65E775CA8EB023\n47B984114E5646B8114E5847B8E498849F479E93\nE347FBB5EC08CB8F30B24A23C7098B3CCBC31B2D\nC2093D4EB81EDE2897F09530326087377E86279C\n3C7BF192A31CCFC988BFD7D993A747669C1C2313\n4638E164CA927072FC24CF8F1CA79EFC0566A33C\n2F3D0302A02F3BC28D3C2748648403AF029F2380\n95318331965FC5D8227C99FD62F78617DE1918ED\n6EC311B368530FEB69375AA82C5BBDE3E0F0D1E2\n5ECE8BC343C5DE23CEC07071CF91417BD8B60737\n984CFF8E1EB2BBBB376DF816BA3E622FCFCBF867\nBE5EFD7981B1A3A7A0FA3DAD4BF36516D4BEC4DA\nD8BC5A8D6A79F00A6B79A051D916AA871D7F88CA\nB550178D9602E760B7F656A37A1EA1CC05D4968B\nFA92BD9CBD3C775FCD6EB0E566B38335535C772C\n7C5B483D065BF2E01E1DF71E61F53CE46C03D782\n7D0BD3B7FB1B6CCB186BCE0D33B66EBD7061EB56\n6676754D4E7675B14CA170FD7AA1A0592727B52D\n8C9D3E8D1DC61E3BA6DD626CDF3E1D55C6D6AFC7\nBE9831B031B6249F1F1FC7A53D9FBF74097BC7DA\nB5E3E31B37B2A55D5DE3E36082E207D3F26A6E5F\n7785162791F485EF70EEA6BC5D702E70EAAF5A9C\nD7852983F8477AFE2AAD4824485C7000FBAE552A\nF5F6F6CFF2BCE3F2332072DC599E8A8CE74BF50B\n6DFE8DCC64CC4F85E13A759E87206765BF55DADD\nE086CB1B22C7CFF4734780516B7D63A565F5BEEE\nC9F857DA3C45AB7C40AC534F5B1677B8F0A4544A\nCAC86BA8BB6424718366556724DCF727AC7269DB\n9A0B57AF5E11DEEFF4DC1F944D7CB75CEA4D4BF9\n4FAC7E47F3C63F532101BBEF9E7FEBFC9713BB4A\n80C5093D798D96D4606319167881FA9E96A8C817\nE270A9F48113FE454FDCA045896F5B5C48F51DE5\n93C83F6B95B78BF03AADBC05915120643C818374\nB917DCA4A5B7B42D5FC16E15DFA2A76628839400\n6746524E53A62665FCC3DC1A4E5353B1B84EEBC0\n51B3ACBE9B9419EEB7635CA7AC72052453963508\n12C1BC3A59292D4BA4904122EC3EA29AF0827BD4\n069B284A258B53481076384B591548DF8B6F6A43\n8413C4B78981A02326AA0A518107C20B536A438E\n02901E32404F2912149CDC1F92CEB3C4AAE2FB64\nAA44A594F347A9CA4F860D3482F48240A9C80BEE\n5247E272217C8E8C925233C492BA326A32A54EE4\n0BCD61EF97440B1A77995507C664AAC2818C5C22\n83D0E7FBEF50CE75C22A17C09830AC8E8008EF1E\n99AE13DCD7668AF00EA2E387C10CE5A41825DF1B\nADD336734CC4B364F8DE0C3543D3771DE8483CAF\nE679506A26521BE78B789A0C11CE472F441EE3DA\n3465234908629D4A06C9FBD494334801B232709B\nB2BE47910F01C6949AA5B6314A22A450ABD1C954\n3AC74604658BC67C71B2A21444EC324F5AA3B364\n9E295590B9B1FEC191F2765871B6B473AA54AEC0\n8A2A4768D9899433F860564B7D9052E5BC729BCC\nDAE13E6839B3DDB62B2E1FA8D3818E1AAA432176\n2AB2079087D5480252C703A2041F643751A2DC1F\nD6ECDE4A83323E0A2745E452758F3223659D1778\n3EFA37B52591EB8EDEA7BCF47C118E090FED78D0\nA4C44F79DEE64E00FF7D81B60852CAD704BA5404\n88BFC8A0BE3D585673454366E74A20BC49CC6FF0\n9C00A1A4A82EDB43D48737D7F60E0CCDF91201A5\n5A1D622C58825E4182337050071011C751C94821\nC94910016AA8F8FA5C13E5E228503034554D6A9F\nE24E8522FDD210A10E3DEAA5011715083ACFE9C6\n10217AA136E25CA3FCA748915D215A760E084D37\n7F2E802781D35AFD090751297CA1DBDC918A6A3E\nDAE51A757C464CA602C522FF243CB2F0CA393EFF\nD27A9CC3C08349FCF4145971B9D17A3EE2F8F1C2\nEB10A7FFF6C73FF806E3FEFD53C0287F38D1A91F\n9B6BD83E66BCB6735B19042B766EDBBB07986773\n65EDDBFC3C5368368B2C7760EE8800E21DFB933E\nAD280D8DBCF9B65DDC32A2FF317875C8191AFC1F\n000E00EB37EAB4CECBEBECBC0CCF06793DBD2EB3\n".to_string() + }, + trm::Group { + flags: trm::GroupFlags::empty(), + ttype: trm::GroupType::Logoff, + pdata: 1619, + lines: 1, + text: "".to_string() + } + ], + faces: vec![] + } +] diff --git a/tests/term.rs b/tests/term.rs new file mode 100644 index 0000000..47e0516 --- /dev/null +++ b/tests/term.rs @@ -0,0 +1,27 @@ +use maraiah::{durandal::bin, marathon::trm}; + +#[test] +fn read_term_must_process_map0() +{ + let inp = bin::rd_array(INPUT, trm::read_term).unwrap(); + let out = include!("data/term.out"); + + // for better debug output, we iterate over each item + assert_eq!(inp.len(), out.len()); + + for (itrm, otrm) in inp.iter().zip(&out) { + assert_eq!(itrm.groups.len(), otrm.groups.len()); + for (igrp, ogrp) in itrm.groups.iter().zip(&otrm.groups) { + assert_eq!(igrp, ogrp); + } + + assert_eq!(itrm.faces.len(), otrm.faces.len()); + for (ifac, ofac) in itrm.faces.iter().zip(&otrm.faces) { + assert_eq!(ifac, ofac); + } + } +} + +const INPUT: &'static [u8] = include_bytes!("data/term.in"); + +// EOF