diff --git a/ci-rust b/ci-rust index 6afe5c4e7..9541e8fbc 100755 --- a/ci-rust +++ b/ci-rust @@ -1,12 +1,16 @@ #!/bin/sh - +set -eu . ./config mkdir -p "$TEST_OUT_DIR/rust" -cd spec/rust -mkdir src -touch src/lib.rs -cargo build -cargo test-junit \ - --name "../../$TEST_OUT_DIR/rust/results.xml" +rm -rf "spec/rust/src" +mkdir -p "spec/rust/src/" +for rs in $(ls "$FORMATS_COMPILED_DIR/rust/"); do + cp "$FORMATS_COMPILED_DIR/rust/$rs" "spec/rust/src" + mod_name="$(echo "$rs" | cut -d'.' -f1)" + echo "pub mod $mod_name;" >> "spec/rust/src/lib.rs" +done + +cd "spec/rust" +cargo junit --name "../../$TEST_OUT_DIR/rust/results.xml" diff --git a/spec/rust/Cargo.lock b/spec/rust/Cargo.lock index 31bdaab29..14b5457de 100644 --- a/spec/rust/Cargo.lock +++ b/spec/rust/Cargo.lock @@ -1,121 +1,25 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. [[package]] name = "byteorder" -version = "0.5.3" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] -name = "cc" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "encoding" -version = "0.2.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-japanese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-korean" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-simpchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-singlebyte" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding-index-tradchinese" -version = "1.20141219.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "encoding_index_tests" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "flate2" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", - "miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "kaitai_struct" -version = "0.2.0" -source = "git+https://github.com/CWood1/kaitai_struct_rust_runtime#b5484246b52c57ad7e2cb66af7b37347289c058e" -dependencies = [ - "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", - "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "flate2 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "libc" -version = "0.2.40" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "miniz-sys" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" +name = "kaitai" +version = "0.1.0" +source = "git+https://github.com/bspeice/kaitai_rust#c108db095d80721bfcf212f5ccba45fdfa5a6ed6" dependencies = [ - "cc 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] -name = "rust" +name = "kaitai_test" version = "0.1.0" dependencies = [ - "kaitai_struct 0.2.0 (git+https://github.com/CWood1/kaitai_struct_rust_runtime)", + "kaitai 0.1.0 (git+https://github.com/bspeice/kaitai_rust)", ] [metadata] -"checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" -"checksum cc 1.0.9 (registry+https://github.com/rust-lang/crates.io-index)" = "2b4911e4bdcb4100c7680e7e854ff38e23f1b34d4d9e079efae3da2801341ffc" -"checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" -"checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" -"checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" -"checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" -"checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" -"checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" -"checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" -"checksum flate2 0.2.20 (registry+https://github.com/rust-lang/crates.io-index)" = "e6234dd4468ae5d1e2dbb06fe2b058696fdc50a339c68a393aefbf00bc81e423" -"checksum kaitai_struct 0.2.0 (git+https://github.com/CWood1/kaitai_struct_rust_runtime)" = "" -"checksum libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)" = "6fd41f331ac7c5b8ac259b8bf82c75c0fb2e469bbf37d2becbba9a6a2221965b" -"checksum miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4" +"checksum byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a019b10a2a7cdeb292db131fc8113e57ea2a908f6e7894b0c3c671893b65dbeb" +"checksum kaitai 0.1.0 (git+https://github.com/bspeice/kaitai_rust)" = "" diff --git a/spec/rust/Cargo.toml b/spec/rust/Cargo.toml index e79b56875..c41a9f750 100644 --- a/spec/rust/Cargo.toml +++ b/spec/rust/Cargo.toml @@ -1,8 +1,8 @@ [package] -name = "rust" +name = "kaitai_test" version = "0.1.0" -authors = ["Connor Wood "] -build = "build.rs" +authors = ["Connor Wood ", "Bradlee Speice"] +edition = "2018" [dependencies] -kaitai_struct = { git = "https://github.com/CWood1/kaitai_struct_rust_runtime" } +kaitai = { git = "https://github.com/bspeice/kaitai_rust" } diff --git a/spec/rust/build.rs b/spec/rust/build.rs deleted file mode 100644 index d629f0b37..000000000 --- a/spec/rust/build.rs +++ /dev/null @@ -1,52 +0,0 @@ -use std::{ - io::{ - self, - prelude::* - }, - fs, - path::Path -}; - -fn main() { - let source_path = Path::new("../../compiled/rust"); - let destination_path = Path::new("./src"); - - remove_existing(destination_path).unwrap_or_else(|e| { - println!("Unable to remove existing files under test: {}", e.to_string()); - }); - - copy_new(source_path, destination_path).unwrap_or_else(|e| { - println!("Unable to copy new files under test: {}", e.to_string()); - }); -} - -fn remove_existing(destination_path: &Path) -> io::Result<()> { - for entry in fs::read_dir(destination_path)? { - let entry = entry?; - let path = entry.path(); - - fs::remove_file(path)?; - } - - Ok(()) -} - -fn copy_new(source_path: &Path, destination_path: &Path) -> io::Result<()> { - let mut librs = fs::File::create(source_path.join("lib.rs"))?; - - write!(librs, "extern crate kaitai_struct;")?; - - for entry in fs::read_dir(source_path)? { - let entry = entry?; - let path = entry.path(); - - if let Some(file_name) = path.file_name() { - fs::copy(path.clone(), destination_path.join(file_name))?; - - write!(librs, "pub mod {};\n", - path.file_stem().unwrap().to_str().unwrap())?; - } - } - - Ok(()) -} diff --git a/spec/rust/test_expr_sizeof_type_0.rs b/spec/rust/test_expr_sizeof_type_0.rs deleted file mode 100644 index 67cb1b5ce..000000000 --- a/spec/rust/test_expr_sizeof_type_0.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprSizeofType0; - -#[test] -fn test_expr_sizeof_type_0() { - if let Ok(r) = ExprSizeofType0::from_file("src/fixed_struct.bin") { - assert_eq!(r.sizeof_block, ((1 + 4) + 2)); - } -} diff --git a/spec/rust/test_expr_sizeof_type_1.rs b/spec/rust/test_expr_sizeof_type_1.rs deleted file mode 100644 index 9ab8e1f8c..000000000 --- a/spec/rust/test_expr_sizeof_type_1.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprSizeofType1; - -#[test] -fn test_expr_sizeof_type_1() { - if let Ok(r) = ExprSizeofType1::from_file("src/fixed_struct.bin") { - assert_eq!(r.sizeof_block, (((1 + 4) + 2) + 4)); - assert_eq!(r.sizeof_subblock, 4); - } -} diff --git a/spec/rust/test_expr_sizeof_value_0.rs b/spec/rust/test_expr_sizeof_value_0.rs deleted file mode 100644 index c51d563a7..000000000 --- a/spec/rust/test_expr_sizeof_value_0.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprSizeofValue0; - -#[test] -fn test_expr_sizeof_value_0() { - if let Ok(r) = ExprSizeofValue0::from_file("src/fixed_struct.bin") { - assert_eq!(r.self_sizeof, (((1 + 4) + 2) + 2)); - assert_eq!(r.sizeof_block, ((1 + 4) + 2)); - assert_eq!(r.sizeof_block_a, 1); - assert_eq!(r.sizeof_block_b, 4); - assert_eq!(r.sizeof_block_c, 2); - } -} diff --git a/spec/rust/test_expr_sizeof_value_sized.rs b/spec/rust/test_expr_sizeof_value_sized.rs deleted file mode 100644 index 50f5839d2..000000000 --- a/spec/rust/test_expr_sizeof_value_sized.rs +++ /dev/null @@ -1,18 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprSizeofValueSized; - -#[test] -fn test_expr_sizeof_value_sized() { - if let Ok(r) = ExprSizeofValueSized::from_file("src/fixed_struct.bin") { - assert_eq!(r.self_sizeof, (12 + 2)); - assert_eq!(r.sizeof_block, 12); - assert_eq!(r.sizeof_block_a, 1); - assert_eq!(r.sizeof_block_b, 4); - assert_eq!(r.sizeof_block_c, 2); - } -} diff --git a/spec/rust/test_io_local_var.rs b/spec/rust/test_io_local_var.rs deleted file mode 100644 index 3d861355c..000000000 --- a/spec/rust/test_io_local_var.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IoLocalVar; - -#[test] -fn test_io_local_var() { - if let Ok(r) = IoLocalVar::from_file("src/full256.bin") { - assert_eq!(r.skip, vec!([0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13])); - assert_eq!(r.followup, 20); - } -} diff --git a/spec/rust/test_meta_tags.rs b/spec/rust/test_meta_tags.rs deleted file mode 100644 index 4978b9f09..000000000 --- a/spec/rust/test_meta_tags.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::MetaTags; - -#[test] -fn test_meta_tags() { - if let Ok(r) = MetaTags::from_file("src/fixed_struct.bin") { - } -} diff --git a/spec/rust/test_meta_xref.rs b/spec/rust/test_meta_xref.rs deleted file mode 100644 index 9f068b47a..000000000 --- a/spec/rust/test_meta_xref.rs +++ /dev/null @@ -1,13 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::MetaXref; - -#[test] -fn test_meta_xref() { - if let Ok(r) = MetaXref::from_file("src/fixed_struct.bin") { - } -} diff --git a/spec/rust/test_repeat_eos_bit.rs b/spec/rust/test_repeat_eos_bit.rs deleted file mode 100644 index a7518aade..000000000 --- a/spec/rust/test_repeat_eos_bit.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatEosBit; - -#[test] -fn test_repeat_eos_bit() { - if let Ok(r) = RepeatEosBit::from_file("src/enum_0.bin") { - assert_eq!(r.nibbles.len(), 16); - } -} diff --git a/spec/rust/tests/test_bcd_user_type_be.rs b/spec/rust/tests/test_bcd_user_type_be.rs index 640195c8b..d336146b0 100644 --- a/spec/rust/tests/test_bcd_user_type_be.rs +++ b/spec/rust/tests/test_bcd_user_type_be.rs @@ -1,19 +1,19 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BcdUserTypeBe; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bcd_user_type_be::*; +use std::fs; #[test] fn test_bcd_user_type_be() { - if let Ok(r) = BcdUserTypeBe::from_file("src/bcd_user_type_be.bin") { - assert_eq!(r.ltr.as_int, 12345678); - assert_eq!(r.ltr.as_str, "12345678"); - assert_eq!(r.rtl.as_int, 87654321); - assert_eq!(r.rtl.as_str, "87654321"); - assert_eq!(r.leading_zero_ltr.as_int, 123456); - assert_eq!(r.leading_zero_ltr.as_str, "00123456"); - } + let data = fs::read("../../src/bcd_user_type_be.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BcdUserTypeBe::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(ltr)),identifier(as_int)), IntNum(12345678)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(ltr)),identifier(as_str)), Str(12345678)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(rtl)),identifier(as_int)), IntNum(87654321)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(rtl)),identifier(as_str)), Str(87654321)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(leading_zero_ltr)),identifier(as_int)), IntNum(123456)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(leading_zero_ltr)),identifier(as_str)), Str(00123456)) } diff --git a/spec/rust/tests/test_bcd_user_type_le.rs b/spec/rust/tests/test_bcd_user_type_le.rs index 9769abc1a..9dad1e810 100644 --- a/spec/rust/tests/test_bcd_user_type_le.rs +++ b/spec/rust/tests/test_bcd_user_type_le.rs @@ -1,19 +1,19 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BcdUserTypeLe; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bcd_user_type_le::*; +use std::fs; #[test] fn test_bcd_user_type_le() { - if let Ok(r) = BcdUserTypeLe::from_file("src/bcd_user_type_le.bin") { - assert_eq!(r.ltr.as_int, 12345678); - assert_eq!(r.ltr.as_str, "12345678"); - assert_eq!(r.rtl.as_int, 87654321); - assert_eq!(r.rtl.as_str, "87654321"); - assert_eq!(r.leading_zero_ltr.as_int, 123456); - assert_eq!(r.leading_zero_ltr.as_str, "00123456"); - } + let data = fs::read("../../src/bcd_user_type_le.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BcdUserTypeLe::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(ltr)),identifier(as_int)), IntNum(12345678)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(ltr)),identifier(as_str)), Str(12345678)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(rtl)),identifier(as_int)), IntNum(87654321)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(rtl)),identifier(as_str)), Str(87654321)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(leading_zero_ltr)),identifier(as_int)), IntNum(123456)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(leading_zero_ltr)),identifier(as_str)), Str(00123456)) } diff --git a/spec/rust/tests/test_bits_byte_aligned.rs b/spec/rust/tests/test_bits_byte_aligned.rs index 128edb632..85544ad8b 100644 --- a/spec/rust/tests/test_bits_byte_aligned.rs +++ b/spec/rust/tests/test_bits_byte_aligned.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BitsByteAligned; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bits_byte_aligned::*; +use std::fs; #[test] fn test_bits_byte_aligned() { - if let Ok(r) = BitsByteAligned::from_file("src/fixed_struct.bin") { - assert_eq!(r.one, 20); - assert_eq!(r.byte_1, 65); - assert_eq!(r.two, 2); - assert_eq!(r.three, false); - assert_eq!(r.byte_2, 75); - assert_eq!(r.four, 2892); - assert_eq!(r.byte_3, vec!([0xff])); - assert_eq!(r.full_byte, 255); - assert_eq!(r.byte_4, 80); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BitsByteAligned::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, 20); + assert_eq!(r.byte_1, 65); + assert_eq!(r.two, 2); + assert_eq!(r.three, false); + assert_eq!(r.byte_2, 75); + assert_eq!(r.four, 2892); + assert_eq!(r.byte_3, &[0xff]); + assert_eq!(r.full_byte, 255); + assert_eq!(r.byte_4, 80); } diff --git a/spec/rust/tests/test_bits_enum.rs b/spec/rust/tests/test_bits_enum.rs new file mode 100644 index 000000000..3d80fb639 --- /dev/null +++ b/spec/rust/tests/test_bits_enum.rs @@ -0,0 +1,16 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bits_enum::*; +use std::fs; + +#[test] +fn test_bits_enum() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BitsEnum::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(one)), EnumByLabel(identifier(animal),identifier(platypus),typeId(false,ArrayBuffer(bits_enum),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(two)), EnumByLabel(identifier(animal),identifier(horse),typeId(false,ArrayBuffer(bits_enum),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(three)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(bits_enum),false))) +} diff --git a/spec/rust/tests/test_bits_simple.rs b/spec/rust/tests/test_bits_simple.rs index c3eb6a06c..621297c1d 100644 --- a/spec/rust/tests/test_bits_simple.rs +++ b/spec/rust/tests/test_bits_simple.rs @@ -1,27 +1,27 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BitsSimple; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bits_simple::*; +use std::fs; #[test] fn test_bits_simple() { - if let Ok(r) = BitsSimple::from_file("src/fixed_struct.bin") { - assert_eq!(r.byte_1, 80); - assert_eq!(r.byte_2, 65); - assert_eq!(r.bits_a, false); - assert_eq!(r.bits_b, 4); - assert_eq!(r.bits_c, 3); - assert_eq!(r.large_bits_1, 300); - assert_eq!(r.spacer, 5); - assert_eq!(r.large_bits_2, 1329); - assert_eq!(r.normal_s2, -1); - assert_eq!(r.byte_8_9_10, 5259587); - assert_eq!(r.byte_11_to_14, 1261262125); - assert_eq!(r.byte_15_to_19, 293220057087); - assert_eq!(r.byte_20_to_27, 18446744073709551615); - assert_eq!(r.test_if_b1, 123); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BitsSimple::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.byte_1, 80); + assert_eq!(r.byte_2, 65); + assert_eq!(r.bits_a, false); + assert_eq!(r.bits_b, 4); + assert_eq!(r.bits_c, 3); + assert_eq!(r.large_bits_1, 300); + assert_eq!(r.spacer, 5); + assert_eq!(r.large_bits_2, 1329); + assert_eq!(r.normal_s2, -1); + assert_eq!(r.byte_8_9_10, 5259587); + assert_eq!(r.byte_11_to_14, 1261262125); + assert_eq!(r.byte_15_to_19, 293220057087); + assert_eq!(r.byte_20_to_27, 18446744073709551615); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(test_if_b1)), IntNum(123)) } diff --git a/spec/rust/tests/test_buffered_struct.rs b/spec/rust/tests/test_buffered_struct.rs index 2b4a8d82e..e9f3a021f 100644 --- a/spec/rust/tests/test_buffered_struct.rs +++ b/spec/rust/tests/test_buffered_struct.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BufferedStruct; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::buffered_struct::*; +use std::fs; #[test] fn test_buffered_struct() { - if let Ok(r) = BufferedStruct::from_file("src/buffered_struct.bin") { - assert_eq!(r.len1, 16); - assert_eq!(r.block1.number1, 66); - assert_eq!(r.block1.number2, 67); - assert_eq!(r.len2, 8); - assert_eq!(r.block2.number1, 68); - assert_eq!(r.block2.number2, 69); - assert_eq!(r.finisher, 238); - } + let data = fs::read("../../src/buffered_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BufferedStruct::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.len1, 16); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(block1)),identifier(number1)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(block1)),identifier(number2)), IntNum(67)) + assert_eq!(r.len2, 8); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(block2)),identifier(number1)), IntNum(68)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(block2)),identifier(number2)), IntNum(69)) + assert_eq!(r.finisher, 238); } diff --git a/spec/rust/tests/test_bytes_pad_term.rs b/spec/rust/tests/test_bytes_pad_term.rs index 87ac91cd8..522f57323 100644 --- a/spec/rust/tests/test_bytes_pad_term.rs +++ b/spec/rust/tests/test_bytes_pad_term.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::BytesPadTerm; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::bytes_pad_term::*; +use std::fs; #[test] fn test_bytes_pad_term() { - if let Ok(r) = BytesPadTerm::from_file("src/str_pad_term.bin") { - assert_eq!(r.str_pad, vec!([0x73, 0x74, 0x72, 0x31])); - assert_eq!(r.str_term, vec!([0x73, 0x74, 0x72, 0x32, 0x66, 0x6f, 0x6f])); - assert_eq!(r.str_term_and_pad, vec!([0x73, 0x74, 0x72, 0x2b, 0x2b, 0x2b, 0x33, 0x62, 0x61, 0x72, 0x2b, 0x2b, 0x2b])); - assert_eq!(r.str_term_include, vec!([0x73, 0x74, 0x72, 0x34, 0x62, 0x61, 0x7a, 0x40])); - } + let data = fs::read("../../src/str_pad_term.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = BytesPadTerm::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.str_pad, &[0x73, 0x74, 0x72, 0x31]); + assert_eq!(r.str_term, &[0x73, 0x74, 0x72, 0x32, 0x66, 0x6f, 0x6f]); + assert_eq!(r.str_term_and_pad, &[0x73, 0x74, 0x72, 0x2b, 0x2b, 0x2b, 0x33, 0x62, 0x61, 0x72, 0x2b, 0x2b, 0x2b]); + assert_eq!(r.str_term_include, &[0x73, 0x74, 0x72, 0x34, 0x62, 0x61, 0x7a, 0x40]); } diff --git a/spec/rust/tests/test_cast_nested.rs b/spec/rust/tests/test_cast_nested.rs index 80a1d7566..84845d4b6 100644 --- a/spec/rust/tests/test_cast_nested.rs +++ b/spec/rust/tests/test_cast_nested.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::CastNested; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::cast_nested::*; +use std::fs; #[test] fn test_cast_nested() { - if let Ok(r) = CastNested::from_file("src/switch_opcodes.bin") { - assert_eq!(r.opcodes_0_str.value, "foobar"); - assert_eq!(r.opcodes_0_str_value, "foobar"); - assert_eq!(r.opcodes_1_int.value, 66); - assert_eq!(r.opcodes_1_int_value, 66); - } + let data = fs::read("../../src/switch_opcodes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = CastNested::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes_0_str)),identifier(value)), Str(foobar)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(opcodes_0_str_value)), Str(foobar)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes_1_int)),identifier(value)), IntNum(66)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(opcodes_1_int_value)), IntNum(66)) } diff --git a/spec/rust/tests/test_cast_to_imported.rs b/spec/rust/tests/test_cast_to_imported.rs index 896ee9be3..e3380e8cc 100644 --- a/spec/rust/tests/test_cast_to_imported.rs +++ b/spec/rust/tests/test_cast_to_imported.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::CastToImported; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::cast_to_imported::*; +use std::fs; #[test] fn test_cast_to_imported() { - if let Ok(r) = CastToImported::from_file("src/fixed_struct.bin") { - assert_eq!(r.one.one, 80); - assert_eq!(r.one_casted.one, 80); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = CastToImported::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(one)), IntNum(80)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one_casted)),identifier(one)), IntNum(80)) } diff --git a/spec/rust/tests/test_cast_to_top.rs b/spec/rust/tests/test_cast_to_top.rs index 8c248dc84..107baef40 100644 --- a/spec/rust/tests/test_cast_to_top.rs +++ b/spec/rust/tests/test_cast_to_top.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::CastToTop; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::cast_to_top::*; +use std::fs; #[test] fn test_cast_to_top() { - if let Ok(r) = CastToTop::from_file("src/fixed_struct.bin") { - assert_eq!(r.code, 80); - assert_eq!(r.header.code, 65); - assert_eq!(r.header_casted.code, 65); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = CastToTop::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.code, 80); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header)),identifier(code)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header_casted)),identifier(code)), IntNum(65)) } diff --git a/spec/rust/tests/test_default_big_endian.rs b/spec/rust/tests/test_default_big_endian.rs index f5fc0ee75..db2d6bd2e 100644 --- a/spec/rust/tests/test_default_big_endian.rs +++ b/spec/rust/tests/test_default_big_endian.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DefaultBigEndian; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::default_big_endian::*; +use std::fs; #[test] fn test_default_big_endian() { - if let Ok(r) = DefaultBigEndian::from_file("src/enum_0.bin") { - assert_eq!(r.one, 117440512); - } + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DefaultBigEndian::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, 117440512); } diff --git a/spec/rust/tests/test_default_endian_expr_inherited.rs b/spec/rust/tests/test_default_endian_expr_inherited.rs index f48bf523f..808430a09 100644 --- a/spec/rust/tests/test_default_endian_expr_inherited.rs +++ b/spec/rust/tests/test_default_endian_expr_inherited.rs @@ -1,28 +1,28 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DefaultEndianExprInherited; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::default_endian_expr_inherited::*; +use std::fs; #[test] fn test_default_endian_expr_inherited() { - if let Ok(r) = DefaultEndianExprInherited::from_file("src/endian_expr.bin") { - assert_eq!(r.docs[0].indicator, vec!([0x49, 0x49])); - assert_eq!(r.docs[0].main.insides.some_int, 66); - assert_eq!(r.docs[0].main.insides.more.some_int1, 16896); - assert_eq!(r.docs[0].main.insides.more.some_int2, 66); - assert_eq!(r.docs[0].main.insides.more.some_inst, 66); - assert_eq!(r.docs[1].indicator, vec!([0x4d, 0x4d])); - assert_eq!(r.docs[1].main.insides.some_int, 66); - assert_eq!(r.docs[1].main.insides.more.some_int1, 66); - assert_eq!(r.docs[1].main.insides.more.some_int2, 16896); - assert_eq!(r.docs[1].main.insides.more.some_inst, 1107296256); - assert_eq!(r.docs[2].indicator, vec!([0x58, 0x58])); - assert_eq!(r.docs[2].main.insides.some_int, 66); - assert_eq!(r.docs[2].main.insides.more.some_int1, 66); - assert_eq!(r.docs[2].main.insides.more.some_int2, 16896); - assert_eq!(r.docs[2].main.insides.more.some_inst, 1107296256); - } + let data = fs::read("../../src/endian_expr.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DefaultEndianExprInherited::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(indicator)), List(ArrayBuffer(IntNum(73), IntNum(73)))) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(insides)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int1)), IntNum(16896)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int2)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_inst)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(indicator)), List(ArrayBuffer(IntNum(77), IntNum(77)))) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(insides)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int1)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int2)), IntNum(16896)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_inst)), IntNum(1107296256)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(indicator)), List(ArrayBuffer(IntNum(88), IntNum(88)))) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(insides)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int1)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_int2)), IntNum(16896)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(insides)),identifier(more)),identifier(some_inst)), IntNum(1107296256)) } diff --git a/spec/rust/tests/test_default_endian_expr_is_be.rs b/spec/rust/tests/test_default_endian_expr_is_be.rs index 031394522..6d6e258e8 100644 --- a/spec/rust/tests/test_default_endian_expr_is_be.rs +++ b/spec/rust/tests/test_default_endian_expr_is_be.rs @@ -1,31 +1,31 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DefaultEndianExprIsBe; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::default_endian_expr_is_be::*; +use std::fs; #[test] fn test_default_endian_expr_is_be() { - if let Ok(r) = DefaultEndianExprIsBe::from_file("src/endian_expr.bin") { - assert_eq!(r.docs[0].indicator, vec!([0x49, 0x49])); - assert_eq!(r.docs[0].main.some_int, 66); - assert_eq!(r.docs[0].main.some_int_be, 66); - assert_eq!(r.docs[0].main.some_int_le, 66); - assert_eq!(r.docs[0].main.inst_int, 66); - assert_eq!(r.docs[0].main.inst_sub.foo, 66); - assert_eq!(r.docs[1].indicator, vec!([0x4d, 0x4d])); - assert_eq!(r.docs[1].main.some_int, 66); - assert_eq!(r.docs[1].main.some_int_be, 66); - assert_eq!(r.docs[1].main.some_int_le, 66); - assert_eq!(r.docs[1].main.inst_int, 1107296256); - assert_eq!(r.docs[1].main.inst_sub.foo, 1107296256); - assert_eq!(r.docs[2].indicator, vec!([0x58, 0x58])); - assert_eq!(r.docs[2].main.some_int, 1107296256); - assert_eq!(r.docs[2].main.some_int_be, 66); - assert_eq!(r.docs[2].main.some_int_le, 66); - assert_eq!(r.docs[2].main.inst_int, 66); - assert_eq!(r.docs[2].main.inst_sub.foo, 66); - } + let data = fs::read("../../src/endian_expr.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DefaultEndianExprIsBe::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(indicator)), List(ArrayBuffer(IntNum(73), IntNum(73)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int_le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(inst_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(inst_sub)),identifier(foo)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(indicator)), List(ArrayBuffer(IntNum(77), IntNum(77)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int_le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(inst_int)), IntNum(1107296256)) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(inst_sub)),identifier(foo)), IntNum(1107296256)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(indicator)), List(ArrayBuffer(IntNum(88), IntNum(88)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int)), IntNum(1107296256)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int_le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(inst_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(inst_sub)),identifier(foo)), IntNum(66)) } diff --git a/spec/rust/tests/test_default_endian_expr_is_le.rs b/spec/rust/tests/test_default_endian_expr_is_le.rs index 5172458be..18ff4f5a7 100644 --- a/spec/rust/tests/test_default_endian_expr_is_le.rs +++ b/spec/rust/tests/test_default_endian_expr_is_le.rs @@ -1,25 +1,25 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DefaultEndianExprIsLe; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::default_endian_expr_is_le::*; +use std::fs; #[test] fn test_default_endian_expr_is_le() { - if let Ok(r) = DefaultEndianExprIsLe::from_file("src/endian_expr.bin") { - assert_eq!(r.docs[0].indicator, vec!([0x49, 0x49])); - assert_eq!(r.docs[0].main.some_int, 66); - assert_eq!(r.docs[0].main.some_int_be, 66); - assert_eq!(r.docs[0].main.some_int_le, 66); - assert_eq!(r.docs[1].indicator, vec!([0x4d, 0x4d])); - assert_eq!(r.docs[1].main.some_int, 66); - assert_eq!(r.docs[1].main.some_int_be, 66); - assert_eq!(r.docs[1].main.some_int_le, 66); - assert_eq!(r.docs[2].indicator, vec!([0x58, 0x58])); - assert_eq!(r.docs[2].main.some_int, 66); - assert_eq!(r.docs[2].main.some_int_be, 66); - assert_eq!(r.docs[2].main.some_int_le, 66); - } + let data = fs::read("../../src/endian_expr.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DefaultEndianExprIsLe::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(indicator)), List(ArrayBuffer(IntNum(73), IntNum(73)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(0)),identifier(main)),identifier(some_int_le)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(indicator)), List(ArrayBuffer(IntNum(77), IntNum(77)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(1)),identifier(main)),identifier(some_int_le)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(indicator)), List(ArrayBuffer(IntNum(88), IntNum(88)))) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int_be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(docs)),IntNum(2)),identifier(main)),identifier(some_int_le)), IntNum(66)) } diff --git a/spec/rust/tests/test_default_endian_mod.rs b/spec/rust/tests/test_default_endian_mod.rs index d8f21e85b..0491abccf 100644 --- a/spec/rust/tests/test_default_endian_mod.rs +++ b/spec/rust/tests/test_default_endian_mod.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DefaultEndianMod; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::default_endian_mod::*; +use std::fs; #[test] fn test_default_endian_mod() { - if let Ok(r) = DefaultEndianMod::from_file("src/fixed_struct.bin") { - assert_eq!(r.main.one, 1262698832); - assert_eq!(r.main.nest.two, -52947); - assert_eq!(r.main.nest_be.two, 1346454347); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DefaultEndianMod::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main)),identifier(one)), IntNum(1262698832)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main)),identifier(nest)),identifier(two)), UnaryOp(Minus,IntNum(52947))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main)),identifier(nest_be)),identifier(two)), IntNum(1346454347)) } diff --git a/spec/rust/tests/test_docstrings.rs b/spec/rust/tests/test_docstrings.rs index c71d39911..4487b6243 100644 --- a/spec/rust/tests/test_docstrings.rs +++ b/spec/rust/tests/test_docstrings.rs @@ -1,13 +1,13 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::Docstrings; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::docstrings::*; +use std::fs; #[test] fn test_docstrings() { - if let Ok(r) = Docstrings::from_file("src/fixed_struct.bin") { - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Docstrings::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); } diff --git a/spec/rust/tests/test_docstrings_docref.rs b/spec/rust/tests/test_docstrings_docref.rs index 6a0603587..079ea5054 100644 --- a/spec/rust/tests/test_docstrings_docref.rs +++ b/spec/rust/tests/test_docstrings_docref.rs @@ -1,13 +1,13 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::DocstringsDocref; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::docstrings_docref::*; +use std::fs; #[test] fn test_docstrings_docref() { - if let Ok(r) = DocstringsDocref::from_file("src/fixed_struct.bin") { - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DocstringsDocref::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); } diff --git a/spec/rust/tests/test_docstrings_docref_multi.rs b/spec/rust/tests/test_docstrings_docref_multi.rs new file mode 100644 index 000000000..b230d3b91 --- /dev/null +++ b/spec/rust/tests/test_docstrings_docref_multi.rs @@ -0,0 +1,13 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::docstrings_docref_multi::*; +use std::fs; + +#[test] +fn test_docstrings_docref_multi() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = DocstringsDocrefMulti::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); +} diff --git a/spec/rust/tests/test_enum_0.rs b/spec/rust/tests/test_enum_0.rs new file mode 100644 index 000000000..8292c0d50 --- /dev/null +++ b/spec/rust/tests/test_enum_0.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_0::*; +use std::fs; + +#[test] +fn test_enum_0() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Enum0::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_0),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(chicken),typeId(false,ArrayBuffer(enum_0),false))) +} diff --git a/spec/rust/tests/test_enum_1.rs b/spec/rust/tests/test_enum_1.rs new file mode 100644 index 000000000..67b442448 --- /dev/null +++ b/spec/rust/tests/test_enum_1.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_1::*; +use std::fs; + +#[test] +fn test_enum_1() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Enum1::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main)),identifier(submain)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_1, main_obj),false))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main)),identifier(submain)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(chicken),typeId(false,ArrayBuffer(enum_1, main_obj),false))) +} diff --git a/spec/rust/tests/test_enum_deep.rs b/spec/rust/tests/test_enum_deep.rs new file mode 100644 index 000000000..783fd9f5a --- /dev/null +++ b/spec/rust/tests/test_enum_deep.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_deep::*; +use std::fs; + +#[test] +fn test_enum_deep() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumDeep::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_deep, container1),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(hare),typeId(false,ArrayBuffer(enum_deep, container1, container2),false))) +} diff --git a/spec/rust/tests/test_enum_deep_literals.rs b/spec/rust/tests/test_enum_deep_literals.rs new file mode 100644 index 000000000..38158ba78 --- /dev/null +++ b/spec/rust/tests/test_enum_deep_literals.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_deep_literals::*; +use std::fs; + +#[test] +fn test_enum_deep_literals() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumDeepLiterals::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_pet_1_ok)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_pet_2_ok)), Bool(true)) +} diff --git a/spec/rust/tests/test_enum_fancy.rs b/spec/rust/tests/test_enum_fancy.rs new file mode 100644 index 000000000..29fa588cc --- /dev/null +++ b/spec/rust/tests/test_enum_fancy.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_fancy::*; +use std::fs; + +#[test] +fn test_enum_fancy() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumFancy::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_fancy),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(chicken),typeId(false,ArrayBuffer(enum_fancy),false))) +} diff --git a/spec/rust/tests/test_enum_if.rs b/spec/rust/tests/test_enum_if.rs new file mode 100644 index 000000000..3cd6b7228 --- /dev/null +++ b/spec/rust/tests/test_enum_if.rs @@ -0,0 +1,20 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_if::*; +use std::fs; + +#[test] +fn test_enum_if() { + let data = fs::read("../../src/if_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumIf::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op1)),identifier(opcode)), EnumByLabel(identifier(opcodes),identifier(a_string),typeId(false,ArrayBuffer(enum_if),false))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op1)),identifier(arg_str)),identifier(str)), Str(foo)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(opcode)), EnumByLabel(identifier(opcodes),identifier(a_tuple),typeId(false,ArrayBuffer(enum_if),false))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(arg_tuple)),identifier(num1)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(arg_tuple)),identifier(num2)), IntNum(67)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op3)),identifier(opcode)), EnumByLabel(identifier(opcodes),identifier(a_string),typeId(false,ArrayBuffer(enum_if),false))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op3)),identifier(arg_str)),identifier(str)), Str(bar)) +} diff --git a/spec/rust/tests/test_enum_invalid.rs b/spec/rust/tests/test_enum_invalid.rs new file mode 100644 index 000000000..0eefe8c70 --- /dev/null +++ b/spec/rust/tests/test_enum_invalid.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_invalid::*; +use std::fs; + +#[test] +fn test_enum_invalid() { + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumInvalid::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(dog),typeId(false,List(),false))) + // nullAsset(r.pet_2); +} diff --git a/spec/rust/tests/test_enum_negative.rs b/spec/rust/tests/test_enum_negative.rs new file mode 100644 index 000000000..38ef4dc7c --- /dev/null +++ b/spec/rust/tests/test_enum_negative.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_negative::*; +use std::fs; + +#[test] +fn test_enum_negative() { + let data = fs::read("../../src/enum_negative.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumNegative::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(f1)), EnumByLabel(identifier(constants),identifier(negative_one),typeId(false,ArrayBuffer(enum_negative),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(f2)), EnumByLabel(identifier(constants),identifier(positive_one),typeId(false,ArrayBuffer(enum_negative),false))) +} diff --git a/spec/rust/tests/test_enum_of_value_inst.rs b/spec/rust/tests/test_enum_of_value_inst.rs new file mode 100644 index 000000000..aa5fe526d --- /dev/null +++ b/spec/rust/tests/test_enum_of_value_inst.rs @@ -0,0 +1,17 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_of_value_inst::*; +use std::fs; + +#[test] +fn test_enum_of_value_inst() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumOfValueInst::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_of_value_inst),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(chicken),typeId(false,ArrayBuffer(enum_of_value_inst),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_3)), EnumByLabel(identifier(animal),identifier(dog),typeId(false,ArrayBuffer(enum_of_value_inst),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_4)), EnumByLabel(identifier(animal),identifier(dog),typeId(false,ArrayBuffer(enum_of_value_inst),false))) +} diff --git a/spec/rust/tests/test_enum_to_i.rs b/spec/rust/tests/test_enum_to_i.rs new file mode 100644 index 000000000..517f863cc --- /dev/null +++ b/spec/rust/tests/test_enum_to_i.rs @@ -0,0 +1,18 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::enum_to_i::*; +use std::fs; + +#[test] +fn test_enum_to_i() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = EnumToI::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(enum_to_i),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_2)), EnumByLabel(identifier(animal),identifier(chicken),typeId(false,ArrayBuffer(enum_to_i),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1_i)), IntNum(7)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(pet_1_mod)), IntNum(32775)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(one_lt_two)), Bool(true)) +} diff --git a/spec/rust/tests/test_expr_0.rs b/spec/rust/tests/test_expr_0.rs index 686cfdd53..b4e60efa6 100644 --- a/spec/rust/tests/test_expr_0.rs +++ b/spec/rust/tests/test_expr_0.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::Expr0; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_0::*; +use std::fs; #[test] fn test_expr_0() { - if let Ok(r) = Expr0::from_file("src/str_encodings.bin") { - assert_eq!(r.must_be_f7, 247); - assert_eq!(r.must_be_abc123, "abc123"); - } + let data = fs::read("../../src/str_encodings.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Expr0::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(must_be_f7)), IntNum(247)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(must_be_abc123)), Str(abc123)) } diff --git a/spec/rust/tests/test_expr_1.rs b/spec/rust/tests/test_expr_1.rs index 7b1377902..03d9a0252 100644 --- a/spec/rust/tests/test_expr_1.rs +++ b/spec/rust/tests/test_expr_1.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::Expr1; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_1::*; +use std::fs; #[test] fn test_expr_1() { - if let Ok(r) = Expr1::from_file("src/str_encodings.bin") { - assert_eq!(r.len_of_1, 10); - assert_eq!(r.len_of_1_mod, 8); - assert_eq!(r.str1, "Some ASC"); - assert_eq!(r.str1_len, 8); - } + let data = fs::read("../../src/str_encodings.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Expr1::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.len_of_1, 10); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(len_of_1_mod)), IntNum(8)) + assert_eq!(r.str1, "Some ASC"); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_len)), IntNum(8)) } diff --git a/spec/rust/tests/test_expr_2.rs b/spec/rust/tests/test_expr_2.rs index eb7a2cb6a..7ec22e089 100644 --- a/spec/rust/tests/test_expr_2.rs +++ b/spec/rust/tests/test_expr_2.rs @@ -1,30 +1,30 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::Expr2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_2::*; +use std::fs; #[test] fn test_expr_2() { - if let Ok(r) = Expr2::from_file("src/str_encodings.bin") { - assert_eq!(r.str1.len_orig, 10); - assert_eq!(r.str1.len_mod, 7); - assert_eq!(r.str1.str, "Some AS"); - assert_eq!(r.str1_len, 7); - assert_eq!(r.str1_len_mod, 7); - assert_eq!(r.str1_byte1, 73); - assert_eq!(r.str1_avg, 73); - assert_eq!(r.str1_char5, "e"); - assert_eq!(r.str1_tuple5.byte0, 101); - assert_eq!(r.str1_tuple5.byte0, 101); - assert_eq!(r.str1_tuple5.byte1, 32); - assert_eq!(r.str1_tuple5.byte2, 65); - assert_eq!(r.str1_tuple5.avg, 48); - assert_eq!(r.str2_tuple5.byte0, 101); - assert_eq!(r.str2_tuple5.byte1, 32); - assert_eq!(r.str2_tuple5.byte2, 65); - assert_eq!(r.str2_tuple5.avg, 48); - } + let data = fs::read("../../src/str_encodings.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Expr2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1)),identifier(len_orig)), IntNum(10)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1)),identifier(len_mod)), IntNum(7)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1)),identifier(str)), Str(Some AS)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_len)), IntNum(7)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_len_mod)), IntNum(7)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_byte1)), IntNum(73)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_avg)), IntNum(73)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(str1_char5)), Str(e)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1_tuple5)),identifier(byte0)), IntNum(101)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1_tuple5)),identifier(byte0)), IntNum(101)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1_tuple5)),identifier(byte1)), IntNum(32)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1_tuple5)),identifier(byte2)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str1_tuple5)),identifier(avg)), IntNum(48)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str2_tuple5)),identifier(byte0)), IntNum(101)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str2_tuple5)),identifier(byte1)), IntNum(32)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str2_tuple5)),identifier(byte2)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(str2_tuple5)),identifier(avg)), IntNum(48)) } diff --git a/spec/rust/tests/test_expr_3.rs b/spec/rust/tests/test_expr_3.rs index 9998e367a..2dc0c09c7 100644 --- a/spec/rust/tests/test_expr_3.rs +++ b/spec/rust/tests/test_expr_3.rs @@ -1,25 +1,25 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::Expr3; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_3::*; +use std::fs; #[test] fn test_expr_3() { - if let Ok(r) = Expr3::from_file("src/fixed_struct.bin") { - assert_eq!(r.one, 80); - assert_eq!(r.two, "ACK"); - assert_eq!(r.three, "@ACK"); - assert_eq!(r.four, "_ACK_"); - assert_eq!(r.is_str_eq, true); - assert_eq!(r.is_str_ne, false); - assert_eq!(r.is_str_lt, true); - assert_eq!(r.is_str_gt, false); - assert_eq!(r.is_str_le, true); - assert_eq!(r.is_str_ge, false); - assert_eq!(r.is_str_lt2, true); - assert_eq!(r.test_not, true); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Expr3::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, 80); + assert_eq!(r.two, "ACK"); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(three)), Str(@ACK)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(four)), Str(_ACK_)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_eq)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_ne)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_lt)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_gt)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_le)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_ge)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_str_lt2)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(test_not)), Bool(true)) } diff --git a/spec/rust/tests/test_expr_array.rs b/spec/rust/tests/test_expr_array.rs index 21504b7d4..1ab3d71b6 100644 --- a/spec/rust/tests/test_expr_array.rs +++ b/spec/rust/tests/test_expr_array.rs @@ -1,28 +1,28 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprArray; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_array::*; +use std::fs; #[test] fn test_expr_array() { - if let Ok(r) = ExprArray::from_file("src/expr_array.bin") { - assert_eq!(r.aint_size, 4); - assert_eq!(r.aint_first, 7657765); - assert_eq!(r.aint_last, 16272640); - assert_eq!(r.aint_min, 49185); - assert_eq!(r.aint_max, 1123362332); - assert_eq!(r.afloat_size, 3); - assert_eq!(r.afloat_first, -2.6839530254859364E-121); - assert_eq!(r.afloat_last, -1.1103359815095273E-175); - assert_eq!(r.afloat_min, -8.754689149998834E+288); - assert_eq!(r.afloat_max, -1.1103359815095273E-175); - assert_eq!(r.astr_size, 3); - assert_eq!(r.astr_first, "foo"); - assert_eq!(r.astr_last, "baz"); - assert_eq!(r.astr_min, "bar"); - assert_eq!(r.astr_max, "foo"); - } + let data = fs::read("../../src/expr_array.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprArray::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(aint_size)), IntNum(4)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(aint_first)), IntNum(7657765)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(aint_last)), IntNum(16272640)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(aint_min)), IntNum(49185)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(aint_max)), IntNum(1123362332)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(afloat_size)), IntNum(3)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(afloat_first)), UnaryOp(Minus,FloatNum(2.6839530254859364E-121))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(afloat_last)), UnaryOp(Minus,FloatNum(1.1103359815095273E-175))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(afloat_min)), UnaryOp(Minus,FloatNum(8.754689149998834E+288))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(afloat_max)), UnaryOp(Minus,FloatNum(1.1103359815095273E-175))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(astr_size)), IntNum(3)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(astr_first)), Str(foo)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(astr_last)), Str(baz)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(astr_min)), Str(bar)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(astr_max)), Str(foo)) } diff --git a/spec/rust/tests/test_expr_bytes_cmp.rs b/spec/rust/tests/test_expr_bytes_cmp.rs index 58656b11c..80e8dadf8 100644 --- a/spec/rust/tests/test_expr_bytes_cmp.rs +++ b/spec/rust/tests/test_expr_bytes_cmp.rs @@ -1,23 +1,23 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprBytesCmp; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_bytes_cmp::*; +use std::fs; #[test] fn test_expr_bytes_cmp() { - if let Ok(r) = ExprBytesCmp::from_file("src/fixed_struct.bin") { - assert_eq!(r.one, vec!([0x50])); - assert_eq!(r.two, vec!([0x41, 0x43, 0x4b])); - assert_eq!(r.is_eq, true); - assert_eq!(r.is_ne, false); - assert_eq!(r.is_lt, true); - assert_eq!(r.is_gt, false); - assert_eq!(r.is_le, true); - assert_eq!(r.is_ge, false); - assert_eq!(r.is_lt2, false); - assert_eq!(r.is_gt2, true); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprBytesCmp::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, &[0x50]); + assert_eq!(r.two, &[0x41, 0x43, 0x4b]); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_eq)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_ne)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_lt)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_gt)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_le)), Bool(true)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_ge)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_lt2)), Bool(false)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(is_gt2)), Bool(true)) } diff --git a/spec/rust/tests/test_expr_enum.rs b/spec/rust/tests/test_expr_enum.rs new file mode 100644 index 000000000..f496b93cd --- /dev/null +++ b/spec/rust/tests/test_expr_enum.rs @@ -0,0 +1,16 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_enum::*; +use std::fs; + +#[test] +fn test_expr_enum() { + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprEnum::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(const_dog)), EnumByLabel(identifier(animal),identifier(dog),typeId(false,ArrayBuffer(expr_enum),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(derived_boom)), EnumByLabel(identifier(animal),identifier(boom),typeId(false,ArrayBuffer(expr_enum),false))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(derived_dog)), EnumByLabel(identifier(animal),identifier(dog),typeId(false,ArrayBuffer(expr_enum),false))) +} diff --git a/spec/rust/tests/test_expr_io_pos.rs b/spec/rust/tests/test_expr_io_pos.rs index f2410bae0..4ff9c2432 100644 --- a/spec/rust/tests/test_expr_io_pos.rs +++ b/spec/rust/tests/test_expr_io_pos.rs @@ -1,19 +1,19 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprIoPos; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_io_pos::*; +use std::fs; #[test] fn test_expr_io_pos() { - if let Ok(r) = ExprIoPos::from_file("src/expr_io_pos.bin") { - assert_eq!(r.substream1.my_str, "CURIOSITY"); - assert_eq!(r.substream1.body, vec!([0x11, 0x22, 0x33, 0x44])); - assert_eq!(r.substream1.number, 66); - assert_eq!(r.substream2.my_str, "KILLED"); - assert_eq!(r.substream2.body, vec!([0x61, 0x20, 0x63, 0x61, 0x74])); - assert_eq!(r.substream2.number, 103); - } + let data = fs::read("../../src/expr_io_pos.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprIoPos::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream1)),identifier(my_str)), Str(CURIOSITY)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream1)),identifier(body)), List(ArrayBuffer(IntNum(17), IntNum(34), IntNum(51), IntNum(68)))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream1)),identifier(number)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream2)),identifier(my_str)), Str(KILLED)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream2)),identifier(body)), List(ArrayBuffer(IntNum(97), IntNum(32), IntNum(99), IntNum(97), IntNum(116)))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(substream2)),identifier(number)), IntNum(103)) } diff --git a/spec/rust/tests/test_expr_mod.rs b/spec/rust/tests/test_expr_mod.rs index 14001402e..35ea3d58a 100644 --- a/spec/rust/tests/test_expr_mod.rs +++ b/spec/rust/tests/test_expr_mod.rs @@ -1,19 +1,19 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ExprMod; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_mod::*; +use std::fs; #[test] fn test_expr_mod() { - if let Ok(r) = ExprMod::from_file("src/fixed_struct.bin") { - assert_eq!(r.int_u, 1262698832); - assert_eq!(r.int_s, -52947); - assert_eq!(r.mod_pos_const, 9); - assert_eq!(r.mod_neg_const, 4); - assert_eq!(r.mod_pos_seq, 5); - assert_eq!(r.mod_neg_seq, 2); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprMod::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.int_u, 1262698832); + assert_eq!(r.int_s, -52947); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(mod_pos_const)), IntNum(9)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(mod_neg_const)), IntNum(4)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(mod_pos_seq)), IntNum(5)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(mod_neg_seq)), IntNum(2)) } diff --git a/spec/rust/tests/test_expr_sizeof_type_0.rs b/spec/rust/tests/test_expr_sizeof_type_0.rs new file mode 100644 index 000000000..f5fecb538 --- /dev/null +++ b/spec/rust/tests/test_expr_sizeof_type_0.rs @@ -0,0 +1,14 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_sizeof_type_0::*; +use std::fs; + +#[test] +fn test_expr_sizeof_type_0() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprSizeofType0::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block)), BinOp(BinOp(IntNum(1),Add,IntNum(4)),Add,IntNum(2))) +} diff --git a/spec/rust/tests/test_expr_sizeof_type_1.rs b/spec/rust/tests/test_expr_sizeof_type_1.rs new file mode 100644 index 000000000..44f5e2b51 --- /dev/null +++ b/spec/rust/tests/test_expr_sizeof_type_1.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_sizeof_type_1::*; +use std::fs; + +#[test] +fn test_expr_sizeof_type_1() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprSizeofType1::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block)), BinOp(BinOp(BinOp(IntNum(1),Add,IntNum(4)),Add,IntNum(2)),Add,IntNum(4))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_subblock)), IntNum(4)) +} diff --git a/spec/rust/tests/test_expr_sizeof_value_0.rs b/spec/rust/tests/test_expr_sizeof_value_0.rs new file mode 100644 index 000000000..91cc27bab --- /dev/null +++ b/spec/rust/tests/test_expr_sizeof_value_0.rs @@ -0,0 +1,18 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_sizeof_value_0::*; +use std::fs; + +#[test] +fn test_expr_sizeof_value_0() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprSizeofValue0::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(self_sizeof)), BinOp(BinOp(BinOp(IntNum(1),Add,IntNum(4)),Add,IntNum(2)),Add,IntNum(2))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block)), BinOp(BinOp(IntNum(1),Add,IntNum(4)),Add,IntNum(2))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_a)), IntNum(1)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_b)), IntNum(4)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_c)), IntNum(2)) +} diff --git a/spec/rust/tests/test_expr_sizeof_value_sized.rs b/spec/rust/tests/test_expr_sizeof_value_sized.rs new file mode 100644 index 000000000..508047501 --- /dev/null +++ b/spec/rust/tests/test_expr_sizeof_value_sized.rs @@ -0,0 +1,18 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::expr_sizeof_value_sized::*; +use std::fs; + +#[test] +fn test_expr_sizeof_value_sized() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ExprSizeofValueSized::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(self_sizeof)), BinOp(IntNum(12),Add,IntNum(2))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block)), IntNum(12)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_a)), IntNum(1)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_b)), IntNum(4)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(sizeof_block_c)), IntNum(2)) +} diff --git a/spec/rust/tests/test_fixed_contents.rs b/spec/rust/tests/test_fixed_contents.rs index fb0a425c0..c926f149d 100644 --- a/spec/rust/tests/test_fixed_contents.rs +++ b/spec/rust/tests/test_fixed_contents.rs @@ -1,13 +1,13 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::FixedContents; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::fixed_contents::*; +use std::fs; #[test] fn test_fixed_contents() { - if let Ok(r) = FixedContents::from_file("src/fixed_struct.bin") { - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = FixedContents::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); } diff --git a/spec/rust/tests/test_fixed_struct.rs b/spec/rust/tests/test_fixed_struct.rs index a47a7e8d5..5a32d691b 100644 --- a/spec/rust/tests/test_fixed_struct.rs +++ b/spec/rust/tests/test_fixed_struct.rs @@ -1,33 +1,33 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::FixedStruct; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::fixed_struct::*; +use std::fs; #[test] fn test_fixed_struct() { - if let Ok(r) = FixedStruct::from_file("src/fixed_struct.bin") { - assert_eq!(r.hdr.uint8, 255); - assert_eq!(r.hdr.uint16, 65535); - assert_eq!(r.hdr.uint32, 4294967295); - assert_eq!(r.hdr.uint64, 18446744073709551615); - assert_eq!(r.hdr.sint8, -1); - assert_eq!(r.hdr.sint16, -1); - assert_eq!(r.hdr.sint32, -1); - assert_eq!(r.hdr.sint64, -1); - assert_eq!(r.hdr.uint16le, 66); - assert_eq!(r.hdr.uint32le, 66); - assert_eq!(r.hdr.uint64le, 66); - assert_eq!(r.hdr.sint16le, -66); - assert_eq!(r.hdr.sint32le, -66); - assert_eq!(r.hdr.sint64le, -66); - assert_eq!(r.hdr.uint16be, 66); - assert_eq!(r.hdr.uint32be, 66); - assert_eq!(r.hdr.uint64be, 66); - assert_eq!(r.hdr.sint16be, -66); - assert_eq!(r.hdr.sint32be, -66); - assert_eq!(r.hdr.sint64be, -66); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = FixedStruct::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint8)), IntNum(255)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint16)), IntNum(65535)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint32)), IntNum(4294967295)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint64)), IntNum(18446744073709551615)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint8)), UnaryOp(Minus,IntNum(1))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint16)), UnaryOp(Minus,IntNum(1))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint32)), UnaryOp(Minus,IntNum(1))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint64)), UnaryOp(Minus,IntNum(1))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint16le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint32le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint64le)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint16le)), UnaryOp(Minus,IntNum(66))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint32le)), UnaryOp(Minus,IntNum(66))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint64le)), UnaryOp(Minus,IntNum(66))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint16be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint32be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(uint64be)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint16be)), UnaryOp(Minus,IntNum(66))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint32be)), UnaryOp(Minus,IntNum(66))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hdr)),identifier(sint64be)), UnaryOp(Minus,IntNum(66))) } diff --git a/spec/rust/tests/test_float_to_i.rs b/spec/rust/tests/test_float_to_i.rs index 661d31f48..85a610c4e 100644 --- a/spec/rust/tests/test_float_to_i.rs +++ b/spec/rust/tests/test_float_to_i.rs @@ -1,21 +1,21 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::FloatToI; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::float_to_i::*; +use std::fs; #[test] fn test_float_to_i() { - if let Ok(r) = FloatToI::from_file("src/floating_points.bin") { - assert_eq!(r.single_value, 0.5); - assert_eq!(r.double_value, 0.25); - assert_eq!(r.single_i, 0); - assert_eq!(r.double_i, 0); - assert_eq!(r.float1_i, 1); - assert_eq!(r.float2_i, 1); - assert_eq!(r.float3_i, 1); - assert_eq!(r.float4_i, -2); - } + let data = fs::read("../../src/floating_points.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = FloatToI::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.single_value, 0.5); + assert_eq!(r.double_value, 0.25); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(single_i)), IntNum(0)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(double_i)), IntNum(0)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(float1_i)), IntNum(1)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(float2_i)), IntNum(1)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(float3_i)), IntNum(1)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(float4_i)), UnaryOp(Minus,IntNum(2))) } diff --git a/spec/rust/tests/test_floating_points.rs b/spec/rust/tests/test_floating_points.rs new file mode 100644 index 000000000..541bc3a04 --- /dev/null +++ b/spec/rust/tests/test_floating_points.rs @@ -0,0 +1,21 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::floating_points::*; +use std::fs; + +#[test] +fn test_floating_points() { + let data = fs::read("../../src/floating_points.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = FloatingPoints::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.single_value, 0.5); + assert_eq!(r.single_value_be, 0.5); + assert_eq!(r.double_value, 0.25); + assert_eq!(r.double_value_be, 0.25); + assert_eq!(r.approximate_value, 1.2345); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(single_value_plus_int)), FloatNum(1.5)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(single_value_plus_float)), FloatNum(1.0)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(double_value_plus_float)), FloatNum(0.3)) +} diff --git a/spec/rust/tests/test_hello_world.rs b/spec/rust/tests/test_hello_world.rs index 6397cfb2a..81fcc939e 100644 --- a/spec/rust/tests/test_hello_world.rs +++ b/spec/rust/tests/test_hello_world.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::HelloWorld; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::hello_world::*; +use std::fs; #[test] fn test_hello_world() { - if let Ok(r) = HelloWorld::from_file("src/fixed_struct.bin") { - assert_eq!(r.one, 80); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = HelloWorld::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, 80); } diff --git a/spec/rust/tests/test_if_instances.rs b/spec/rust/tests/test_if_instances.rs new file mode 100644 index 000000000..167f7213f --- /dev/null +++ b/spec/rust/tests/test_if_instances.rs @@ -0,0 +1,14 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::if_instances::*; +use std::fs; + +#[test] +fn test_if_instances() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IfInstances::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // nullAsset(r.never_happens); +} diff --git a/spec/rust/tests/test_if_struct.rs b/spec/rust/tests/test_if_struct.rs index 475ef1e50..5ab4d1b0c 100644 --- a/spec/rust/tests/test_if_struct.rs +++ b/spec/rust/tests/test_if_struct.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IfStruct; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::if_struct::*; +use std::fs; #[test] fn test_if_struct() { - if let Ok(r) = IfStruct::from_file("src/if_struct.bin") { - assert_eq!(r.op1.opcode, 83); - assert_eq!(r.op1.arg_str.str, "foo"); - assert_eq!(r.op2.opcode, 84); - assert_eq!(r.op2.arg_tuple.num1, 66); - assert_eq!(r.op2.arg_tuple.num2, 67); - assert_eq!(r.op3.opcode, 83); - assert_eq!(r.op3.arg_str.str, "bar"); - } + let data = fs::read("../../src/if_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IfStruct::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op1)),identifier(opcode)), IntNum(83)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op1)),identifier(arg_str)),identifier(str)), Str(foo)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(opcode)), IntNum(84)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(arg_tuple)),identifier(num1)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op2)),identifier(arg_tuple)),identifier(num2)), IntNum(67)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op3)),identifier(opcode)), IntNum(83)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(op3)),identifier(arg_str)),identifier(str)), Str(bar)) } diff --git a/spec/rust/tests/test_if_values.rs b/spec/rust/tests/test_if_values.rs index a0ce3dab8..e886195cf 100644 --- a/spec/rust/tests/test_if_values.rs +++ b/spec/rust/tests/test_if_values.rs @@ -1,19 +1,19 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IfValues; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::if_values::*; +use std::fs; #[test] fn test_if_values() { - if let Ok(r) = IfValues::from_file("src/fixed_struct.bin") { - assert_eq!(r.codes[0].opcode, 80); - assert_eq!(r.codes[0].half_opcode, 40); - assert_eq!(r.codes[1].opcode, 65); - assertNull(r.codes[1].half_opcode); - assert_eq!(r.codes[2].opcode, 67); - assertNull(r.codes[2].half_opcode); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IfValues::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(codes)),IntNum(0)),identifier(opcode)), IntNum(80)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(codes)),IntNum(0)),identifier(half_opcode)), IntNum(40)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(codes)),IntNum(1)),identifier(opcode)), IntNum(65)) + // nullAsset(r.codes[1].half_opcode); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(codes)),IntNum(2)),identifier(opcode)), IntNum(67)) + // nullAsset(r.codes[2].half_opcode); } diff --git a/spec/rust/tests/test_imports0.rs b/spec/rust/tests/test_imports0.rs new file mode 100644 index 000000000..14292d0e6 --- /dev/null +++ b/spec/rust/tests/test_imports0.rs @@ -0,0 +1,16 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::imports0::*; +use std::fs; + +#[test] +fn test_imports0() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Imports0::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.two, 80); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(hw)),identifier(one)), IntNum(65)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(hw_one)), IntNum(65)) +} diff --git a/spec/rust/tests/test_imports_abs.rs b/spec/rust/tests/test_imports_abs.rs new file mode 100644 index 000000000..aef0f8eaf --- /dev/null +++ b/spec/rust/tests/test_imports_abs.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::imports_abs::*; +use std::fs; + +#[test] +fn test_imports_abs() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ImportsAbs::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(len)),identifier(value)), IntNum(80)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(body)),identifier(length)), IntNum(80)) +} diff --git a/spec/rust/tests/test_index_sizes.rs b/spec/rust/tests/test_index_sizes.rs index 8d9e033d3..a6fa0178d 100644 --- a/spec/rust/tests/test_index_sizes.rs +++ b/spec/rust/tests/test_index_sizes.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IndexSizes; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::index_sizes::*; +use std::fs; #[test] fn test_index_sizes() { - if let Ok(r) = IndexSizes::from_file("src/index_sizes.bin") { - assert_eq!(r.qty, 3); - assert_eq!(r.sizes[0], 1); - assert_eq!(r.sizes[1], 8); - assert_eq!(r.sizes[2], 4); - assert_eq!(r.bufs[0], "A"); - assert_eq!(r.bufs[1], "BBBBBBBB"); - assert_eq!(r.bufs[2], "CCCC"); - } + let data = fs::read("../../src/index_sizes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IndexSizes::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 3); + assert_eq!(r.sizes[0], 1); + assert_eq!(r.sizes[1], 8); + assert_eq!(r.sizes[2], 4); + assert_eq!(r.bufs[0], "A"); + assert_eq!(r.bufs[1], "BBBBBBBB"); + assert_eq!(r.bufs[2], "CCCC"); } diff --git a/spec/rust/tests/test_index_to_param_eos.rs b/spec/rust/tests/test_index_to_param_eos.rs index f727d6f72..475f491d5 100644 --- a/spec/rust/tests/test_index_to_param_eos.rs +++ b/spec/rust/tests/test_index_to_param_eos.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IndexToParamEos; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::index_to_param_eos::*; +use std::fs; #[test] fn test_index_to_param_eos() { - if let Ok(r) = IndexToParamEos::from_file("src/index_sizes.bin") { - assert_eq!(r.qty, 3); - assert_eq!(r.sizes[0], 1); - assert_eq!(r.sizes[1], 8); - assert_eq!(r.sizes[2], 4); - assert_eq!(r.blocks[0].buf, "A"); - assert_eq!(r.blocks[1].buf, "BBBBBBBB"); - assert_eq!(r.blocks[2].buf, "CCCC"); - } + let data = fs::read("../../src/index_sizes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IndexToParamEos::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 3); + assert_eq!(r.sizes[0], 1); + assert_eq!(r.sizes[1], 8); + assert_eq!(r.sizes[2], 4); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(0)),identifier(buf)), Str(A)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(1)),identifier(buf)), Str(BBBBBBBB)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(2)),identifier(buf)), Str(CCCC)) } diff --git a/spec/rust/tests/test_index_to_param_expr.rs b/spec/rust/tests/test_index_to_param_expr.rs index 321f27012..0dbaf38f9 100644 --- a/spec/rust/tests/test_index_to_param_expr.rs +++ b/spec/rust/tests/test_index_to_param_expr.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IndexToParamExpr; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::index_to_param_expr::*; +use std::fs; #[test] fn test_index_to_param_expr() { - if let Ok(r) = IndexToParamExpr::from_file("src/index_sizes.bin") { - assert_eq!(r.qty, 3); - assert_eq!(r.sizes[0], 1); - assert_eq!(r.sizes[1], 8); - assert_eq!(r.sizes[2], 4); - assert_eq!(r.blocks[0].buf, "A"); - assert_eq!(r.blocks[1].buf, "BBBBBBBB"); - assert_eq!(r.blocks[2].buf, "CCCC"); - } + let data = fs::read("../../src/index_sizes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IndexToParamExpr::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 3); + assert_eq!(r.sizes[0], 1); + assert_eq!(r.sizes[1], 8); + assert_eq!(r.sizes[2], 4); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(0)),identifier(buf)), Str(A)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(1)),identifier(buf)), Str(BBBBBBBB)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(2)),identifier(buf)), Str(CCCC)) } diff --git a/spec/rust/tests/test_index_to_param_until.rs b/spec/rust/tests/test_index_to_param_until.rs index 71d09ffbe..ce1c46f81 100644 --- a/spec/rust/tests/test_index_to_param_until.rs +++ b/spec/rust/tests/test_index_to_param_until.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::IndexToParamUntil; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::index_to_param_until::*; +use std::fs; #[test] fn test_index_to_param_until() { - if let Ok(r) = IndexToParamUntil::from_file("src/index_sizes.bin") { - assert_eq!(r.qty, 3); - assert_eq!(r.sizes[0], 1); - assert_eq!(r.sizes[1], 8); - assert_eq!(r.sizes[2], 4); - assert_eq!(r.blocks[0].buf, "A"); - assert_eq!(r.blocks[1].buf, "BBBBBBBB"); - assert_eq!(r.blocks[2].buf, "CCCC"); - } + let data = fs::read("../../src/index_sizes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IndexToParamUntil::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 3); + assert_eq!(r.sizes[0], 1); + assert_eq!(r.sizes[1], 8); + assert_eq!(r.sizes[2], 4); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(0)),identifier(buf)), Str(A)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(1)),identifier(buf)), Str(BBBBBBBB)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(blocks)),IntNum(2)),identifier(buf)), Str(CCCC)) } diff --git a/spec/rust/tests/test_instance_io_user.rs b/spec/rust/tests/test_instance_io_user.rs index c389a5d3b..7b12699c9 100644 --- a/spec/rust/tests/test_instance_io_user.rs +++ b/spec/rust/tests/test_instance_io_user.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::InstanceIoUser; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::instance_io_user::*; +use std::fs; #[test] fn test_instance_io_user() { - if let Ok(r) = InstanceIoUser::from_file("src/instance_io.bin") { - assert_eq!(r.qty_entries, 3); - assert_eq!(r.entries[0].name, "the"); - assert_eq!(r.entries[1].name, "rainy"); - assert_eq!(r.entries[2].name, "day it is"); - } + let data = fs::read("../../src/instance_io.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = InstanceIoUser::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty_entries, 3); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(entries)),IntNum(0)),identifier(name)), Str(the)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(entries)),IntNum(1)),identifier(name)), Str(rainy)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(entries)),IntNum(2)),identifier(name)), Str(day it is)) } diff --git a/spec/rust/tests/test_instance_std.rs b/spec/rust/tests/test_instance_std.rs index 0a798b75c..2f1a39c39 100644 --- a/spec/rust/tests/test_instance_std.rs +++ b/spec/rust/tests/test_instance_std.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::InstanceStd; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::instance_std::*; +use std::fs; #[test] fn test_instance_std() { - if let Ok(r) = InstanceStd::from_file("src/str_encodings.bin") { - assert_eq!(r.header, "Some "); - } + let data = fs::read("../../src/str_encodings.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = InstanceStd::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(header)), Str(Some )) } diff --git a/spec/rust/tests/test_instance_std_array.rs b/spec/rust/tests/test_instance_std_array.rs index 07df25cd1..134dc6f28 100644 --- a/spec/rust/tests/test_instance_std_array.rs +++ b/spec/rust/tests/test_instance_std_array.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::InstanceStdArray; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::instance_std_array::*; +use std::fs; #[test] fn test_instance_std_array() { - if let Ok(r) = InstanceStdArray::from_file("src/instance_std_array.bin") { - assert_eq!(r.ofs, 16); - assert_eq!(r.qty_entries, 3); - assert_eq!(r.entry_size, 4); - assert_eq!(r.entries.len(), 3); - assert_eq!(r.entries[0], vec!([0x11, 0x11, 0x11, 0x11])); - assert_eq!(r.entries[1], vec!([0x22, 0x22, 0x22, 0x22])); - assert_eq!(r.entries[2], vec!([0x33, 0x33, 0x33, 0x33])); - } + let data = fs::read("../../src/instance_std_array.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = InstanceStdArray::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.ofs, 16); + assert_eq!(r.qty_entries, 3); + assert_eq!(r.entry_size, 4); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(entries)),identifier(size)), IntNum(3)) + assert_eq!(r.entries[0], &[0x11, 0x11, 0x11, 0x11]); + assert_eq!(r.entries[1], &[0x22, 0x22, 0x22, 0x22]); + assert_eq!(r.entries[2], &[0x33, 0x33, 0x33, 0x33]); } diff --git a/spec/rust/tests/test_instance_user_array.rs b/spec/rust/tests/test_instance_user_array.rs index 3cbf3c76d..34ce6a3b3 100644 --- a/spec/rust/tests/test_instance_user_array.rs +++ b/spec/rust/tests/test_instance_user_array.rs @@ -1,23 +1,23 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::InstanceUserArray; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::instance_user_array::*; +use std::fs; #[test] fn test_instance_user_array() { - if let Ok(r) = InstanceUserArray::from_file("src/instance_std_array.bin") { - assert_eq!(r.ofs, 16); - assert_eq!(r.qty_entries, 3); - assert_eq!(r.entry_size, 4); - assert_eq!(r.user_entries.len(), 3); - assert_eq!(r.user_entries[0].word1, 4369); - assert_eq!(r.user_entries[0].word2, 4369); - assert_eq!(r.user_entries[1].word1, 8738); - assert_eq!(r.user_entries[1].word2, 8738); - assert_eq!(r.user_entries[2].word1, 13107); - assert_eq!(r.user_entries[2].word2, 13107); - } + let data = fs::read("../../src/instance_std_array.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = InstanceUserArray::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.ofs, 16); + assert_eq!(r.qty_entries, 3); + assert_eq!(r.entry_size, 4); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),identifier(size)), IntNum(3)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(0)),identifier(word1)), IntNum(4369)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(0)),identifier(word2)), IntNum(4369)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(1)),identifier(word1)), IntNum(8738)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(1)),identifier(word2)), IntNum(8738)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(2)),identifier(word1)), IntNum(13107)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(user_entries)),IntNum(2)),identifier(word2)), IntNum(13107)) } diff --git a/spec/rust/tests/test_integers.rs b/spec/rust/tests/test_integers.rs new file mode 100644 index 000000000..20d9e873a --- /dev/null +++ b/spec/rust/tests/test_integers.rs @@ -0,0 +1,33 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::integers::*; +use std::fs; + +#[test] +fn test_integers() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = Integers::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.uint8, 255); + assert_eq!(r.uint16, 65535); + assert_eq!(r.uint32, 4294967295); + assert_eq!(r.uint64, 18446744073709551615); + assert_eq!(r.sint8, -1); + assert_eq!(r.sint16, -1); + assert_eq!(r.sint32, -1); + assert_eq!(r.sint64, -1); + assert_eq!(r.uint16le, 66); + assert_eq!(r.uint32le, 66); + assert_eq!(r.uint64le, 66); + assert_eq!(r.sint16le, -66); + assert_eq!(r.sint32le, -66); + assert_eq!(r.sint64le, -66); + assert_eq!(r.uint16be, 66); + assert_eq!(r.uint32be, 66); + assert_eq!(r.uint64be, 66); + assert_eq!(r.sint16be, -66); + assert_eq!(r.sint32be, -66); + assert_eq!(r.sint64be, -66); +} diff --git a/spec/rust/tests/test_io_local_var.rs b/spec/rust/tests/test_io_local_var.rs new file mode 100644 index 000000000..cc696f029 --- /dev/null +++ b/spec/rust/tests/test_io_local_var.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::io_local_var::*; +use std::fs; + +#[test] +fn test_io_local_var() { + let data = fs::read("../../src/full256.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = IoLocalVar::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.skip, &[0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, 0x10, 0x11, 0x12, 0x13]); + assert_eq!(r.followup, 20); +} diff --git a/spec/rust/tests/test_js_signed_right_shift.rs b/spec/rust/tests/test_js_signed_right_shift.rs index 305913aa5..f9a9d3156 100644 --- a/spec/rust/tests/test_js_signed_right_shift.rs +++ b/spec/rust/tests/test_js_signed_right_shift.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::JsSignedRightShift; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::js_signed_right_shift::*; +use std::fs; #[test] fn test_js_signed_right_shift() { - if let Ok(r) = JsSignedRightShift::from_file("src/fixed_struct.bin") { - assert_eq!(r.should_be_40000000, 1073741824); - assert_eq!(r.should_be_a00000, 10485760); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = JsSignedRightShift::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(should_be_40000000)), IntNum(1073741824)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(should_be_a00000)), IntNum(10485760)) } diff --git a/spec/rust/tests/test_meta_tags.rs b/spec/rust/tests/test_meta_tags.rs new file mode 100644 index 000000000..0950def3a --- /dev/null +++ b/spec/rust/tests/test_meta_tags.rs @@ -0,0 +1,13 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::meta_tags::*; +use std::fs; + +#[test] +fn test_meta_tags() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = MetaTags::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); +} diff --git a/spec/rust/tests/test_meta_xref.rs b/spec/rust/tests/test_meta_xref.rs index 9f068b47a..23ccff685 100644 --- a/spec/rust/tests/test_meta_xref.rs +++ b/spec/rust/tests/test_meta_xref.rs @@ -1,13 +1,13 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::MetaXref; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::meta_xref::*; +use std::fs; #[test] fn test_meta_xref() { - if let Ok(r) = MetaXref::from_file("src/fixed_struct.bin") { - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = MetaXref::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); } diff --git a/spec/rust/tests/test_multiple_use.rs b/spec/rust/tests/test_multiple_use.rs index c66faece9..c2690e59c 100644 --- a/spec/rust/tests/test_multiple_use.rs +++ b/spec/rust/tests/test_multiple_use.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::MultipleUse; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::multiple_use::*; +use std::fs; #[test] fn test_multiple_use() { - if let Ok(r) = MultipleUse::from_file("src/position_abs.bin") { - assert_eq!(r.t1.first_use.value, 32); - assert_eq!(r.t2.second_use.value, 32); - } + let data = fs::read("../../src/position_abs.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = MultipleUse::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(t1)),identifier(first_use)),identifier(value)), IntNum(32)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(t2)),identifier(second_use)),identifier(value)), IntNum(32)) } diff --git a/spec/rust/tests/test_nav_parent.rs b/spec/rust/tests/test_nav_parent.rs index c43fbd303..6822a6fd5 100644 --- a/spec/rust/tests/test_nav_parent.rs +++ b/spec/rust/tests/test_nav_parent.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParent; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent::*; +use std::fs; #[test] fn test_nav_parent() { - if let Ok(r) = NavParent::from_file("src/nav.bin") { - assert_eq!(r.header.qty_entries, 2); - assert_eq!(r.header.filename_len, 8); - assert_eq!(r.index.entries.len(), 2); - assert_eq!(r.index.entries[0].filename, "FIRST___"); - assert_eq!(r.index.entries[1].filename, "SECOND__"); - } + let data = fs::read("../../src/nav.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParent::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header)),identifier(qty_entries)), IntNum(2)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header)),identifier(filename_len)), IntNum(8)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),identifier(size)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),IntNum(0)),identifier(filename)), Str(FIRST___)) + // assert_eq!(Attribute(Subscript(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),IntNum(1)),identifier(filename)), Str(SECOND__)) } diff --git a/spec/rust/tests/test_nav_parent2.rs b/spec/rust/tests/test_nav_parent2.rs index c2f6d256f..3c975a528 100644 --- a/spec/rust/tests/test_nav_parent2.rs +++ b/spec/rust/tests/test_nav_parent2.rs @@ -1,23 +1,23 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParent2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent2::*; +use std::fs; #[test] fn test_nav_parent2() { - if let Ok(r) = NavParent2::from_file("src/nav_parent2.bin") { - assert_eq!(r.ofs_tags, 8); - assert_eq!(r.num_tags, 2); - assert_eq!(r.tags[0].name, "RAHC"); - assert_eq!(r.tags[0].ofs, 32); - assert_eq!(r.tags[0].num_items, 3); - assert_eq!(r.tags[0].tag_content.content, "foo"); - assert_eq!(r.tags[1].name, "RAHC"); - assert_eq!(r.tags[1].ofs, 35); - assert_eq!(r.tags[1].num_items, 6); - assert_eq!(r.tags[1].tag_content.content, "barbaz"); - } + let data = fs::read("../../src/nav_parent2.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParent2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.ofs_tags, 8); + assert_eq!(r.num_tags, 2); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(name)), Str(RAHC)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(ofs)), IntNum(32)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(num_items)), IntNum(3)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(tag_content)),identifier(content)), Str(foo)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(name)), Str(RAHC)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(ofs)), IntNum(35)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(num_items)), IntNum(6)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(tag_content)),identifier(content)), Str(barbaz)) } diff --git a/spec/rust/tests/test_nav_parent3.rs b/spec/rust/tests/test_nav_parent3.rs index cc5abd5b2..55b4fcd42 100644 --- a/spec/rust/tests/test_nav_parent3.rs +++ b/spec/rust/tests/test_nav_parent3.rs @@ -1,23 +1,23 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParent3; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent3::*; +use std::fs; #[test] fn test_nav_parent3() { - if let Ok(r) = NavParent3::from_file("src/nav_parent2.bin") { - assert_eq!(r.ofs_tags, 8); - assert_eq!(r.num_tags, 2); - assert_eq!(r.tags[0].name, "RAHC"); - assert_eq!(r.tags[0].ofs, 32); - assert_eq!(r.tags[0].num_items, 3); - assert_eq!(r.tags[0].tag_content.content, "foo"); - assert_eq!(r.tags[1].name, "RAHC"); - assert_eq!(r.tags[1].ofs, 35); - assert_eq!(r.tags[1].num_items, 6); - assert_eq!(r.tags[1].tag_content.content, "barbaz"); - } + let data = fs::read("../../src/nav_parent2.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParent3::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.ofs_tags, 8); + assert_eq!(r.num_tags, 2); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(name)), Str(RAHC)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(ofs)), IntNum(32)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(num_items)), IntNum(3)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(0)),identifier(tag_content)),identifier(content)), Str(foo)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(name)), Str(RAHC)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(ofs)), IntNum(35)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(num_items)), IntNum(6)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(tags)),IntNum(1)),identifier(tag_content)),identifier(content)), Str(barbaz)) } diff --git a/spec/rust/tests/test_nav_parent_false.rs b/spec/rust/tests/test_nav_parent_false.rs index f8e935120..6cb0e6293 100644 --- a/spec/rust/tests/test_nav_parent_false.rs +++ b/spec/rust/tests/test_nav_parent_false.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParentFalse; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent_false::*; +use std::fs; #[test] fn test_nav_parent_false() { - if let Ok(r) = NavParentFalse::from_file("src/nav_parent_codes.bin") { - assert_eq!(r.child_size, 3); - assert_eq!(r.element_a.foo.code, 73); - assert_eq!(r.element_a.foo.more, vec!([0x31, 0x32, 0x33])); - assert_eq!(r.element_a.bar.foo.code, 66); - assert_eq!(r.element_b.foo.code, 98); - } + let data = fs::read("../../src/nav_parent_codes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParentFalse::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.child_size, 3); + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(element_a)),identifier(foo)),identifier(code)), IntNum(73)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(element_a)),identifier(foo)),identifier(more)), List(ArrayBuffer(IntNum(49), IntNum(50), IntNum(51)))) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(element_a)),identifier(bar)),identifier(foo)),identifier(code)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(element_b)),identifier(foo)),identifier(code)), IntNum(98)) } diff --git a/spec/rust/tests/test_nav_parent_false2.rs b/spec/rust/tests/test_nav_parent_false2.rs index 868d60f24..68ed5ce2a 100644 --- a/spec/rust/tests/test_nav_parent_false2.rs +++ b/spec/rust/tests/test_nav_parent_false2.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParentFalse2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent_false2::*; +use std::fs; #[test] fn test_nav_parent_false2() { - if let Ok(r) = NavParentFalse2::from_file("src/fixed_struct.bin") { - assert_eq!(r.parentless.foo, 80); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParentFalse2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(parentless)),identifier(foo)), IntNum(80)) } diff --git a/spec/rust/tests/test_nav_parent_override.rs b/spec/rust/tests/test_nav_parent_override.rs index 2ebc78835..b254ec1f1 100644 --- a/spec/rust/tests/test_nav_parent_override.rs +++ b/spec/rust/tests/test_nav_parent_override.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParentOverride; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent_override::*; +use std::fs; #[test] fn test_nav_parent_override() { - if let Ok(r) = NavParentOverride::from_file("src/nav_parent_codes.bin") { - assert_eq!(r.child_size, 3); - assert_eq!(r.child_1.data, vec!([0x49, 0x31, 0x32])); - assert_eq!(r.mediator_2.child_2.data, vec!([0x33, 0x42, 0x62])); - } + let data = fs::read("../../src/nav_parent_codes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParentOverride::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.child_size, 3); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(child_1)),identifier(data)), List(ArrayBuffer(IntNum(73), IntNum(49), IntNum(50)))) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(mediator_2)),identifier(child_2)),identifier(data)), List(ArrayBuffer(IntNum(51), IntNum(66), IntNum(98)))) } diff --git a/spec/rust/tests/test_nav_parent_switch.rs b/spec/rust/tests/test_nav_parent_switch.rs index b2373ef91..adcfe2489 100644 --- a/spec/rust/tests/test_nav_parent_switch.rs +++ b/spec/rust/tests/test_nav_parent_switch.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParentSwitch; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent_switch::*; +use std::fs; #[test] fn test_nav_parent_switch() { - if let Ok(r) = NavParentSwitch::from_file("src/nav_parent_switch.bin") { - assert_eq!(r.category, 1); - assert_eq!(r.content.foo, 66); - assert_eq!(r.content.subelement.bar, 255); - } + let data = fs::read("../../src/nav_parent_switch.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParentSwitch::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.category, 1); + // assert_eq!(Attribute(CastToType(Attribute(Name(identifier(q1w2e3)),identifier(content)),typeId(false,ArrayBuffer(nav_parent_switch, element_1),false)),identifier(foo)), IntNum(66)) + // assert_eq!(Attribute(Attribute(CastToType(Attribute(Name(identifier(q1w2e3)),identifier(content)),typeId(false,ArrayBuffer(nav_parent_switch, element_1),false)),identifier(subelement)),identifier(bar)), IntNum(255)) } diff --git a/spec/rust/tests/test_nav_parent_vs_value_inst.rs b/spec/rust/tests/test_nav_parent_vs_value_inst.rs index 944464338..4efa07ee6 100644 --- a/spec/rust/tests/test_nav_parent_vs_value_inst.rs +++ b/spec/rust/tests/test_nav_parent_vs_value_inst.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavParentVsValueInst; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_parent_vs_value_inst::*; +use std::fs; #[test] fn test_nav_parent_vs_value_inst() { - if let Ok(r) = NavParentVsValueInst::from_file("src/term_strz.bin") { - assert_eq!(r.s1, "foo"); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavParentVsValueInst::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.s1, "foo"); } diff --git a/spec/rust/tests/test_nav_root.rs b/spec/rust/tests/test_nav_root.rs index 1bf59f436..0cfd5e779 100644 --- a/spec/rust/tests/test_nav_root.rs +++ b/spec/rust/tests/test_nav_root.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NavRoot; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nav_root::*; +use std::fs; #[test] fn test_nav_root() { - if let Ok(r) = NavRoot::from_file("src/nav.bin") { - assert_eq!(r.header.qty_entries, 2); - assert_eq!(r.header.filename_len, 8); - assert_eq!(r.index.entries.len(), 2); - assert_eq!(r.index.entries[0].filename, "FIRST___"); - assert_eq!(r.index.entries[1].filename, "SECOND__"); - } + let data = fs::read("../../src/nav.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NavRoot::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header)),identifier(qty_entries)), IntNum(2)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(header)),identifier(filename_len)), IntNum(8)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),identifier(size)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),IntNum(0)),identifier(filename)), Str(FIRST___)) + // assert_eq!(Attribute(Subscript(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entries)),IntNum(1)),identifier(filename)), Str(SECOND__)) } diff --git a/spec/rust/tests/test_nested_same_name.rs b/spec/rust/tests/test_nested_same_name.rs index ca73804cf..25e84288b 100644 --- a/spec/rust/tests/test_nested_same_name.rs +++ b/spec/rust/tests/test_nested_same_name.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NestedSameName; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nested_same_name::*; +use std::fs; #[test] fn test_nested_same_name() { - if let Ok(r) = NestedSameName::from_file("src/repeat_n_struct.bin") { - assert_eq!(r.main_data.main_size, 2); - assert_eq!(r.main_data.foo.data, vec!([0x10, 0x0, 0x0, 0x0])); - } + let data = fs::read("../../src/repeat_n_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NestedSameName::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main_data)),identifier(main_size)), IntNum(2)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main_data)),identifier(foo)),identifier(data)), List(ArrayBuffer(IntNum(16), IntNum(0), IntNum(0), IntNum(0)))) } diff --git a/spec/rust/tests/test_nested_same_name2.rs b/spec/rust/tests/test_nested_same_name2.rs index 1087cb851..662082d1a 100644 --- a/spec/rust/tests/test_nested_same_name2.rs +++ b/spec/rust/tests/test_nested_same_name2.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NestedSameName2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nested_same_name2::*; +use std::fs; #[test] fn test_nested_same_name2() { - if let Ok(r) = NestedSameName2::from_file("src/nested_same_name2.bin") { - assert_eq!(r.version, 66); - assert_eq!(r.main_data.main_size, 2); - assert_eq!(r.main_data.foo.data1, vec!([0x11, 0x11, 0x11, 0x11])); - assert_eq!(r.dummy.dummy_size, 3); - assert_eq!(r.dummy.foo.data2, vec!([0x22, 0x22, 0x22, 0x22, 0x22, 0x22])); - } + let data = fs::read("../../src/nested_same_name2.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NestedSameName2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.version, 66); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main_data)),identifier(main_size)), IntNum(2)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(main_data)),identifier(foo)),identifier(data1)), List(ArrayBuffer(IntNum(17), IntNum(17), IntNum(17), IntNum(17)))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(dummy)),identifier(dummy_size)), IntNum(3)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(dummy)),identifier(foo)),identifier(data2)), List(ArrayBuffer(IntNum(34), IntNum(34), IntNum(34), IntNum(34), IntNum(34), IntNum(34)))) } diff --git a/spec/rust/tests/test_nested_types.rs b/spec/rust/tests/test_nested_types.rs index 796b4dda8..a45a12e3d 100644 --- a/spec/rust/tests/test_nested_types.rs +++ b/spec/rust/tests/test_nested_types.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NestedTypes; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nested_types::*; +use std::fs; #[test] fn test_nested_types() { - if let Ok(r) = NestedTypes::from_file("src/fixed_struct.bin") { - assert_eq!(r.one.typed_at_root.value_b, 80); - assert_eq!(r.one.typed_here.value_c, 65); - assert_eq!(r.two.value_b, 67); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NestedTypes::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_at_root)),identifier(value_b)), IntNum(80)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here)),identifier(value_c)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(two)),identifier(value_b)), IntNum(67)) } diff --git a/spec/rust/tests/test_nested_types2.rs b/spec/rust/tests/test_nested_types2.rs index ed295df76..e4a5f7800 100644 --- a/spec/rust/tests/test_nested_types2.rs +++ b/spec/rust/tests/test_nested_types2.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NestedTypes2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nested_types2::*; +use std::fs; #[test] fn test_nested_types2() { - if let Ok(r) = NestedTypes2::from_file("src/fixed_struct.bin") { - assert_eq!(r.one.typed_at_root.value_b, 80); - assert_eq!(r.one.typed_here1.value_c, 65); - assert_eq!(r.one.typed_here1.typed_here.value_d, 67); - assert_eq!(r.one.typed_here1.typed_parent.value_cc, 75); - assert_eq!(r.one.typed_here1.typed_root.value_b, 45); - assert_eq!(r.one.typed_here2.value_cc, 49); - assert_eq!(r.two.value_b, -1); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NestedTypes2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_at_root)),identifier(value_b)), IntNum(80)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here1)),identifier(value_c)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here1)),identifier(typed_here)),identifier(value_d)), IntNum(67)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here1)),identifier(typed_parent)),identifier(value_cc)), IntNum(75)) + // assert_eq!(Attribute(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here1)),identifier(typed_root)),identifier(value_b)), IntNum(45)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(typed_here2)),identifier(value_cc)), IntNum(49)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(two)),identifier(value_b)), UnaryOp(Minus,IntNum(1))) } diff --git a/spec/rust/tests/test_nested_types3.rs b/spec/rust/tests/test_nested_types3.rs index ee2fd8f97..505192470 100644 --- a/spec/rust/tests/test_nested_types3.rs +++ b/spec/rust/tests/test_nested_types3.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NestedTypes3; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::nested_types3::*; +use std::fs; #[test] fn test_nested_types3() { - if let Ok(r) = NestedTypes3::from_file("src/fixed_struct.bin") { - assert_eq!(r.a_cc.value_cc, 80); - assert_eq!(r.a_c_d.value_d, 65); - assert_eq!(r.b.value_b, 67); - assert_eq!(r.b.a_cc.value_cc, 75); - assert_eq!(r.b.a_c_d.value_d, 45); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NestedTypes3::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(a_cc)),identifier(value_cc)), IntNum(80)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(a_c_d)),identifier(value_d)), IntNum(65)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(b)),identifier(value_b)), IntNum(67)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(b)),identifier(a_cc)),identifier(value_cc)), IntNum(75)) + // assert_eq!(Attribute(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(b)),identifier(a_c_d)),identifier(value_d)), IntNum(45)) } diff --git a/spec/rust/tests/test_non_standard.rs b/spec/rust/tests/test_non_standard.rs index c649b8283..d3a82c8f6 100644 --- a/spec/rust/tests/test_non_standard.rs +++ b/spec/rust/tests/test_non_standard.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::NonStandard; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::non_standard::*; +use std::fs; #[test] fn test_non_standard() { - if let Ok(r) = NonStandard::from_file("src/fixed_struct.bin") { - assert_eq!(r.foo, 80); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = NonStandard::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.foo, 80); } diff --git a/spec/rust/tests/test_params_call_short.rs b/spec/rust/tests/test_params_call_short.rs index e979f2124..1ffc8d4b7 100644 --- a/spec/rust/tests/test_params_call_short.rs +++ b/spec/rust/tests/test_params_call_short.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ParamsCallShort; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::params_call_short::*; +use std::fs; #[test] fn test_params_call_short() { - if let Ok(r) = ParamsCallShort::from_file("src/term_strz.bin") { - assert_eq!(r.buf1.body, "foo|b"); - assert_eq!(r.buf2.body, "ar|ba"); - assert_eq!(r.buf2.trailer, 122); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ParamsCallShort::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(buf1)),identifier(body)), Str(foo|b)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(buf2)),identifier(body)), Str(ar|ba)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(buf2)),identifier(trailer)), IntNum(122)) } diff --git a/spec/rust/tests/test_params_enum.rs b/spec/rust/tests/test_params_enum.rs new file mode 100644 index 000000000..f8d809ed4 --- /dev/null +++ b/spec/rust/tests/test_params_enum.rs @@ -0,0 +1,15 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::params_enum::*; +use std::fs; + +#[test] +fn test_params_enum() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ParamsEnum::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(one)), EnumByLabel(identifier(animal),identifier(cat),typeId(false,ArrayBuffer(params_enum),false))) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(invoke_with_param)),identifier(is_cat)), Bool(true)) +} diff --git a/spec/rust/tests/test_params_pass_usertype.rs b/spec/rust/tests/test_params_pass_usertype.rs index 619950a9f..ecbcbd16f 100644 --- a/spec/rust/tests/test_params_pass_usertype.rs +++ b/spec/rust/tests/test_params_pass_usertype.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ParamsPassUsertype; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::params_pass_usertype::*; +use std::fs; #[test] fn test_params_pass_usertype() { - if let Ok(r) = ParamsPassUsertype::from_file("src/position_in_seq.bin") { - assert_eq!(r.first.foo, 1); - assert_eq!(r.one.buf, vec!([0x2])); - } + let data = fs::read("../../src/position_in_seq.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ParamsPassUsertype::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(first)),identifier(foo)), IntNum(1)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(buf)), List(ArrayBuffer(IntNum(2)))) } diff --git a/spec/rust/tests/test_position_abs.rs b/spec/rust/tests/test_position_abs.rs index 27c477617..adc7203d5 100644 --- a/spec/rust/tests/test_position_abs.rs +++ b/spec/rust/tests/test_position_abs.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::PositionAbs; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::position_abs::*; +use std::fs; #[test] fn test_position_abs() { - if let Ok(r) = PositionAbs::from_file("src/position_abs.bin") { - assert_eq!(r.index_offset, 32); - assert_eq!(r.index.entry, "foo"); - } + let data = fs::read("../../src/position_abs.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = PositionAbs::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.index_offset, 32); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(entry)), Str(foo)) } diff --git a/spec/rust/tests/test_position_in_seq.rs b/spec/rust/tests/test_position_in_seq.rs index 31a69b08e..6e779bf51 100644 --- a/spec/rust/tests/test_position_in_seq.rs +++ b/spec/rust/tests/test_position_in_seq.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::PositionInSeq; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::position_in_seq::*; +use std::fs; #[test] fn test_position_in_seq() { - if let Ok(r) = PositionInSeq::from_file("src/position_in_seq.bin") { - assert_eq!(r.numbers, [(0 + 1), 2, 3]); - } + let data = fs::read("../../src/position_in_seq.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = PositionInSeq::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.numbers, [(0 + 1), 2, 3]); } diff --git a/spec/rust/tests/test_position_to_end.rs b/spec/rust/tests/test_position_to_end.rs index 97f5ddd06..47a3ba686 100644 --- a/spec/rust/tests/test_position_to_end.rs +++ b/spec/rust/tests/test_position_to_end.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::PositionToEnd; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::position_to_end::*; +use std::fs; #[test] fn test_position_to_end() { - if let Ok(r) = PositionToEnd::from_file("src/position_to_end.bin") { - assert_eq!(r.index.foo, 66); - assert_eq!(r.index.bar, 4660); - } + let data = fs::read("../../src/position_to_end.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = PositionToEnd::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(foo)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(index)),identifier(bar)), IntNum(4660)) } diff --git a/spec/rust/tests/test_process_coerce_bytes.rs b/spec/rust/tests/test_process_coerce_bytes.rs index 3cc865f9f..e8d326383 100644 --- a/spec/rust/tests/test_process_coerce_bytes.rs +++ b/spec/rust/tests/test_process_coerce_bytes.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessCoerceBytes; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_coerce_bytes::*; +use std::fs; #[test] fn test_process_coerce_bytes() { - if let Ok(r) = ProcessCoerceBytes::from_file("src/process_coerce_bytes.bin") { - assert_eq!(r.records[0].flag, 0); - assert_eq!(r.records[0].buf, vec!([0x41, 0x41, 0x41, 0x41])); - assert_eq!(r.records[1].flag, 1); - assert_eq!(r.records[1].buf, vec!([0x42, 0x42, 0x42, 0x42])); - } + let data = fs::read("../../src/process_coerce_bytes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessCoerceBytes::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(flag)), IntNum(0)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(buf)), List(ArrayBuffer(IntNum(65), IntNum(65), IntNum(65), IntNum(65)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(flag)), IntNum(1)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(buf)), List(ArrayBuffer(IntNum(66), IntNum(66), IntNum(66), IntNum(66)))) } diff --git a/spec/rust/tests/test_process_coerce_switch.rs b/spec/rust/tests/test_process_coerce_switch.rs deleted file mode 100644 index 5373c7ad7..000000000 --- a/spec/rust/tests/test_process_coerce_switch.rs +++ /dev/null @@ -1,16 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessCoerceSwitch; - -#[test] -fn test_process_coerce_switch() { - if let Ok(r) = ProcessCoerceSwitch::from_file("src/process_coerce_switch.bin") { - assert_eq!(r.buf_type, 0); - assert_eq!(r.flag, 0); - assert_eq!(r.buf.bar, vec!([0x41, 0x41, 0x41, 0x41])); - } -} diff --git a/spec/rust/tests/test_process_coerce_usertype1.rs b/spec/rust/tests/test_process_coerce_usertype1.rs index e5b91114d..8b3d50852 100644 --- a/spec/rust/tests/test_process_coerce_usertype1.rs +++ b/spec/rust/tests/test_process_coerce_usertype1.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessCoerceUsertype1; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_coerce_usertype1::*; +use std::fs; #[test] fn test_process_coerce_usertype1() { - if let Ok(r) = ProcessCoerceUsertype1::from_file("src/process_coerce_bytes.bin") { - assert_eq!(r.records[0].flag, 0); - assert_eq!(r.records[0].buf.value, 1094795585); - assert_eq!(r.records[1].flag, 1); - assert_eq!(r.records[1].buf.value, 1111638594); - } + let data = fs::read("../../src/process_coerce_bytes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessCoerceUsertype1::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(flag)), IntNum(0)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(buf)),identifier(value)), IntNum(1094795585)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(flag)), IntNum(1)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(buf)),identifier(value)), IntNum(1111638594)) } diff --git a/spec/rust/tests/test_process_coerce_usertype2.rs b/spec/rust/tests/test_process_coerce_usertype2.rs index b0ecbd8cf..b763ccee4 100644 --- a/spec/rust/tests/test_process_coerce_usertype2.rs +++ b/spec/rust/tests/test_process_coerce_usertype2.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessCoerceUsertype2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_coerce_usertype2::*; +use std::fs; #[test] fn test_process_coerce_usertype2() { - if let Ok(r) = ProcessCoerceUsertype2::from_file("src/process_coerce_bytes.bin") { - assert_eq!(r.records[0].flag, 0); - assert_eq!(r.records[0].buf.value, 1094795585); - assert_eq!(r.records[1].flag, 1); - assert_eq!(r.records[1].buf.value, 1111638594); - } + let data = fs::read("../../src/process_coerce_bytes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessCoerceUsertype2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(flag)), IntNum(0)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(buf)),identifier(value)), IntNum(1094795585)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(flag)), IntNum(1)) + // assert_eq!(Attribute(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(buf)),identifier(value)), IntNum(1111638594)) } diff --git a/spec/rust/tests/test_process_custom.rs b/spec/rust/tests/test_process_custom.rs index d07d106b2..f7411b083 100644 --- a/spec/rust/tests/test_process_custom.rs +++ b/spec/rust/tests/test_process_custom.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessCustom; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_custom::*; +use std::fs; #[test] fn test_process_custom() { - if let Ok(r) = ProcessCustom::from_file("src/process_rotate.bin") { - assert_eq!(r.buf1, vec!([0x10, 0xb3, 0x94, 0x94, 0xf4])); - assert_eq!(r.buf2, vec!([0x5f, 0xba, 0x7b, 0x93, 0x63, 0x23, 0x5f])); - assert_eq!(r.buf3, vec!([0x29, 0x33, 0xb1, 0x38, 0xb1])); - } + let data = fs::read("../../src/process_rotate.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessCustom::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.buf1, &[0x10, 0xb3, 0x94, 0x94, 0xf4]); + assert_eq!(r.buf2, &[0x5f, 0xba, 0x7b, 0x93, 0x63, 0x23, 0x5f]); + assert_eq!(r.buf3, &[0x29, 0x33, 0xb1, 0x38, 0xb1]); } diff --git a/spec/rust/tests/test_process_rotate.rs b/spec/rust/tests/test_process_rotate.rs index 1ab694a8f..e4d02b5b6 100644 --- a/spec/rust/tests/test_process_rotate.rs +++ b/spec/rust/tests/test_process_rotate.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessRotate; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_rotate::*; +use std::fs; #[test] fn test_process_rotate() { - if let Ok(r) = ProcessRotate::from_file("src/process_rotate.bin") { - assert_eq!(r.buf1, vec!([0x48, 0x65, 0x6c, 0x6c, 0x6f])); - assert_eq!(r.buf2, vec!([0x57, 0x6f, 0x72, 0x6c, 0x64])); - assert_eq!(r.buf3, vec!([0x54, 0x68, 0x65, 0x72, 0x65])); - } + let data = fs::read("../../src/process_rotate.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessRotate::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.buf1, &[0x48, 0x65, 0x6c, 0x6c, 0x6f]); + assert_eq!(r.buf2, &[0x57, 0x6f, 0x72, 0x6c, 0x64]); + assert_eq!(r.buf3, &[0x54, 0x68, 0x65, 0x72, 0x65]); } diff --git a/spec/rust/tests/test_process_to_user.rs b/spec/rust/tests/test_process_to_user.rs index 35fe9f85c..d52b87ddf 100644 --- a/spec/rust/tests/test_process_to_user.rs +++ b/spec/rust/tests/test_process_to_user.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessToUser; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_to_user::*; +use std::fs; #[test] fn test_process_to_user() { - if let Ok(r) = ProcessToUser::from_file("src/process_rotate.bin") { - assert_eq!(r.buf1.str, "Hello"); - } + let data = fs::read("../../src/process_rotate.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessToUser::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(buf1)),identifier(str)), Str(Hello)) } diff --git a/spec/rust/tests/test_process_xor4_const.rs b/spec/rust/tests/test_process_xor4_const.rs index cb41dcc7f..fa258ffba 100644 --- a/spec/rust/tests/test_process_xor4_const.rs +++ b/spec/rust/tests/test_process_xor4_const.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessXor4Const; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_xor4_const::*; +use std::fs; #[test] fn test_process_xor4_const() { - if let Ok(r) = ProcessXor4Const::from_file("src/process_xor_4.bin") { - assert_eq!(r.key, vec!([0xec, 0xbb, 0xa3, 0x14])); - assert_eq!(r.buf, vec!([0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72])); - } + let data = fs::read("../../src/process_xor_4.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessXor4Const::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.key, &[0xec, 0xbb, 0xa3, 0x14]); + assert_eq!(r.buf, &[0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72]); } diff --git a/spec/rust/tests/test_process_xor4_value.rs b/spec/rust/tests/test_process_xor4_value.rs index deff2c110..6c8294f16 100644 --- a/spec/rust/tests/test_process_xor4_value.rs +++ b/spec/rust/tests/test_process_xor4_value.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessXor4Value; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_xor4_value::*; +use std::fs; #[test] fn test_process_xor4_value() { - if let Ok(r) = ProcessXor4Value::from_file("src/process_xor_4.bin") { - assert_eq!(r.key, vec!([0xec, 0xbb, 0xa3, 0x14])); - assert_eq!(r.buf, vec!([0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72])); - } + let data = fs::read("../../src/process_xor_4.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessXor4Value::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.key, &[0xec, 0xbb, 0xa3, 0x14]); + assert_eq!(r.buf, &[0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72]); } diff --git a/spec/rust/tests/test_process_xor_const.rs b/spec/rust/tests/test_process_xor_const.rs index 268c1e802..10165b70f 100644 --- a/spec/rust/tests/test_process_xor_const.rs +++ b/spec/rust/tests/test_process_xor_const.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessXorConst; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_xor_const::*; +use std::fs; #[test] fn test_process_xor_const() { - if let Ok(r) = ProcessXorConst::from_file("src/process_xor_1.bin") { - assert_eq!(r.key, 255); - assert_eq!(r.buf, vec!([0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72])); - } + let data = fs::read("../../src/process_xor_1.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessXorConst::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.key, 255); + assert_eq!(r.buf, &[0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72]); } diff --git a/spec/rust/tests/test_process_xor_value.rs b/spec/rust/tests/test_process_xor_value.rs index e0a266145..8fcade3b4 100644 --- a/spec/rust/tests/test_process_xor_value.rs +++ b/spec/rust/tests/test_process_xor_value.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ProcessXorValue; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::process_xor_value::*; +use std::fs; #[test] fn test_process_xor_value() { - if let Ok(r) = ProcessXorValue::from_file("src/process_xor_1.bin") { - assert_eq!(r.key, 255); - assert_eq!(r.buf, vec!([0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72])); - } + let data = fs::read("../../src/process_xor_1.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ProcessXorValue::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.key, 255); + assert_eq!(r.buf, &[0x66, 0x6f, 0x6f, 0x20, 0x62, 0x61, 0x72]); } diff --git a/spec/rust/tests/test_recursive_one.rs b/spec/rust/tests/test_recursive_one.rs new file mode 100644 index 000000000..625d52c74 --- /dev/null +++ b/spec/rust/tests/test_recursive_one.rs @@ -0,0 +1,17 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::recursive_one::*; +use std::fs; + +#[test] +fn test_recursive_one() { + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RecursiveOne::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.one, 80); + // assert_eq!(Attribute(CastToType(Attribute(Name(identifier(q1w2e3)),identifier(next)),typeId(false,ArrayBuffer(recursive_one),false)),identifier(one)), IntNum(65)) + // assert_eq!(Attribute(CastToType(Attribute(CastToType(Attribute(Name(identifier(q1w2e3)),identifier(next)),typeId(false,ArrayBuffer(recursive_one),false)),identifier(next)),typeId(false,ArrayBuffer(recursive_one),false)),identifier(one)), IntNum(67)) + // assert_eq!(Attribute(CastToType(Attribute(CastToType(Attribute(CastToType(Attribute(Name(identifier(q1w2e3)),identifier(next)),typeId(false,ArrayBuffer(recursive_one),false)),identifier(next)),typeId(false,ArrayBuffer(recursive_one),false)),identifier(next)),typeId(false,ArrayBuffer(recursive_one, fini),false)),identifier(finisher)), IntNum(11595)) +} diff --git a/spec/rust/tests/test_repeat_eos_bit.rs b/spec/rust/tests/test_repeat_eos_bit.rs new file mode 100644 index 000000000..3427a7188 --- /dev/null +++ b/spec/rust/tests/test_repeat_eos_bit.rs @@ -0,0 +1,14 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_eos_bit::*; +use std::fs; + +#[test] +fn test_repeat_eos_bit() { + let data = fs::read("../../src/enum_0.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatEosBit::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(nibbles)),identifier(size)), IntNum(16)) +} diff --git a/spec/rust/tests/test_repeat_eos_struct.rs b/spec/rust/tests/test_repeat_eos_struct.rs index 2eca3a73c..55cd8e5fc 100644 --- a/spec/rust/tests/test_repeat_eos_struct.rs +++ b/spec/rust/tests/test_repeat_eos_struct.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatEosStruct; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_eos_struct::*; +use std::fs; #[test] fn test_repeat_eos_struct() { - if let Ok(r) = RepeatEosStruct::from_file("src/repeat_eos_struct.bin") { - assert_eq!(r.chunks.len(), 2); - assert_eq!(r.chunks[0].offset, 0); - assert_eq!(r.chunks[0].len, 66); - assert_eq!(r.chunks[1].offset, 66); - assert_eq!(r.chunks[1].len, 2069); - } + let data = fs::read("../../src/repeat_eos_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatEosStruct::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),identifier(size)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(offset)), IntNum(0)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(len)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(offset)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(len)), IntNum(2069)) } diff --git a/spec/rust/tests/test_repeat_eos_u4.rs b/spec/rust/tests/test_repeat_eos_u4.rs index 74f5d24cf..d8589ce68 100644 --- a/spec/rust/tests/test_repeat_eos_u4.rs +++ b/spec/rust/tests/test_repeat_eos_u4.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatEosU4; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_eos_u4::*; +use std::fs; #[test] fn test_repeat_eos_u4() { - if let Ok(r) = RepeatEosU4::from_file("src/repeat_eos_struct.bin") { - assert_eq!(r.numbers, [0, 66, 66, 2069]); - } + let data = fs::read("../../src/repeat_eos_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatEosU4::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.numbers, [0, 66, 66, 2069]); } diff --git a/spec/rust/tests/test_repeat_n_struct.rs b/spec/rust/tests/test_repeat_n_struct.rs index 802fb7497..2e500b388 100644 --- a/spec/rust/tests/test_repeat_n_struct.rs +++ b/spec/rust/tests/test_repeat_n_struct.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatNStruct; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_n_struct::*; +use std::fs; #[test] fn test_repeat_n_struct() { - if let Ok(r) = RepeatNStruct::from_file("src/repeat_n_struct.bin") { - assert_eq!(r.chunks.len(), 2); - assert_eq!(r.chunks[0].offset, 16); - assert_eq!(r.chunks[0].len, 8312); - assert_eq!(r.chunks[1].offset, 8328); - assert_eq!(r.chunks[1].len, 15); - } + let data = fs::read("../../src/repeat_n_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatNStruct::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),identifier(size)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(offset)), IntNum(16)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(len)), IntNum(8312)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(offset)), IntNum(8328)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(len)), IntNum(15)) } diff --git a/spec/rust/tests/test_repeat_n_strz.rs b/spec/rust/tests/test_repeat_n_strz.rs index 87c87b8d4..c8717578e 100644 --- a/spec/rust/tests/test_repeat_n_strz.rs +++ b/spec/rust/tests/test_repeat_n_strz.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatNStrz; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_n_strz::*; +use std::fs; #[test] fn test_repeat_n_strz() { - if let Ok(r) = RepeatNStrz::from_file("src/repeat_n_strz.bin") { - assert_eq!(r.qty, 2); - assert_eq!(r.lines, ["foo", "bar"]); - } + let data = fs::read("../../src/repeat_n_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatNStrz::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 2); + assert_eq!(r.lines, ["foo", "bar"]); } diff --git a/spec/rust/tests/test_repeat_n_strz_double.rs b/spec/rust/tests/test_repeat_n_strz_double.rs index 0286318ab..45bfc0169 100644 --- a/spec/rust/tests/test_repeat_n_strz_double.rs +++ b/spec/rust/tests/test_repeat_n_strz_double.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatNStrzDouble; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_n_strz_double::*; +use std::fs; #[test] fn test_repeat_n_strz_double() { - if let Ok(r) = RepeatNStrzDouble::from_file("src/repeat_n_strz.bin") { - assert_eq!(r.qty, 2); - assert_eq!(r.lines1, ["foo"]); - assert_eq!(r.lines2, ["bar"]); - } + let data = fs::read("../../src/repeat_n_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatNStrzDouble::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.qty, 2); + assert_eq!(r.lines1, ["foo"]); + assert_eq!(r.lines2, ["bar"]); } diff --git a/spec/rust/tests/test_repeat_until_complex.rs b/spec/rust/tests/test_repeat_until_complex.rs index 158fc16b9..06fee6025 100644 --- a/spec/rust/tests/test_repeat_until_complex.rs +++ b/spec/rust/tests/test_repeat_until_complex.rs @@ -1,28 +1,28 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatUntilComplex; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_until_complex::*; +use std::fs; #[test] fn test_repeat_until_complex() { - if let Ok(r) = RepeatUntilComplex::from_file("src/repeat_until_complex.bin") { - assert_eq!(r.first.len(), 3); - assert_eq!(r.first[0].count, 4); - assert_eq!(r.first[0].values, [(0 + 1), 2, 3, 4]); - assert_eq!(r.first[1].count, 2); - assert_eq!(r.first[1].values, [(0 + 1), 2]); - assert_eq!(r.first[2].count, 0); - assert_eq!(r.second.len(), 4); - assert_eq!(r.second[0].count, 6); - assert_eq!(r.second[0].values, [(0 + 1), 2, 3, 4, 5, 6]); - assert_eq!(r.second[1].count, 3); - assert_eq!(r.second[1].values, [(0 + 1), 2, 3]); - assert_eq!(r.second[2].count, 4); - assert_eq!(r.second[2].values, [(0 + 1), 2, 3, 4]); - assert_eq!(r.second[3].count, 0); - assert_eq!(r.third, [(0 + 102), 111, 111, 98, 97, 114, 0]); - } + let data = fs::read("../../src/repeat_until_complex.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatUntilComplex::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(first)),identifier(size)), IntNum(3)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(first)),IntNum(0)),identifier(count)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(first)),IntNum(0)),identifier(values)), List(ArrayBuffer(BinOp(IntNum(0),Add,IntNum(1)), IntNum(2), IntNum(3), IntNum(4)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(first)),IntNum(1)),identifier(count)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(first)),IntNum(1)),identifier(values)), List(ArrayBuffer(BinOp(IntNum(0),Add,IntNum(1)), IntNum(2)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(first)),IntNum(2)),identifier(count)), IntNum(0)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(second)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(0)),identifier(count)), IntNum(6)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(0)),identifier(values)), List(ArrayBuffer(BinOp(IntNum(0),Add,IntNum(1)), IntNum(2), IntNum(3), IntNum(4), IntNum(5), IntNum(6)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(1)),identifier(count)), IntNum(3)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(1)),identifier(values)), List(ArrayBuffer(BinOp(IntNum(0),Add,IntNum(1)), IntNum(2), IntNum(3)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(2)),identifier(count)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(2)),identifier(values)), List(ArrayBuffer(BinOp(IntNum(0),Add,IntNum(1)), IntNum(2), IntNum(3), IntNum(4)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(second)),IntNum(3)),identifier(count)), IntNum(0)) + assert_eq!(r.third, [(0 + 102), 111, 111, 98, 97, 114, 0]); } diff --git a/spec/rust/tests/test_repeat_until_s4.rs b/spec/rust/tests/test_repeat_until_s4.rs index 2fe282b51..ee41050b3 100644 --- a/spec/rust/tests/test_repeat_until_s4.rs +++ b/spec/rust/tests/test_repeat_until_s4.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatUntilS4; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_until_s4::*; +use std::fs; #[test] fn test_repeat_until_s4() { - if let Ok(r) = RepeatUntilS4::from_file("src/repeat_until_s4.bin") { - assert_eq!(r.entries, [66, 4919, -251658241, -1]); - assert_eq!(r.afterall, "foobar"); - } + let data = fs::read("../../src/repeat_until_s4.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatUntilS4::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.entries, [66, 4919, -251658241, -1]); + assert_eq!(r.afterall, "foobar"); } diff --git a/spec/rust/tests/test_repeat_until_sized.rs b/spec/rust/tests/test_repeat_until_sized.rs index 3d23c1efc..5010c479e 100644 --- a/spec/rust/tests/test_repeat_until_sized.rs +++ b/spec/rust/tests/test_repeat_until_sized.rs @@ -1,20 +1,20 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::RepeatUntilSized; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::repeat_until_sized::*; +use std::fs; #[test] fn test_repeat_until_sized() { - if let Ok(r) = RepeatUntilSized::from_file("src/repeat_until_process.bin") { - assert_eq!(r.records.len(), 3); - assert_eq!(r.records[0].marker, 232); - assert_eq!(r.records[0].body, 2863311546); - assert_eq!(r.records[1].marker, 250); - assert_eq!(r.records[1].body, 2863315102); - assert_eq!(r.records[2].marker, 170); - assert_eq!(r.records[2].body, 1431655765); - } + let data = fs::read("../../src/repeat_until_process.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = RepeatUntilSized::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(records)),identifier(size)), IntNum(3)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(marker)), IntNum(232)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(0)),identifier(body)), IntNum(2863311546)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(marker)), IntNum(250)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(1)),identifier(body)), IntNum(2863315102)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(2)),identifier(marker)), IntNum(170)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(records)),IntNum(2)),identifier(body)), IntNum(1431655765)) } diff --git a/spec/rust/tests/test_str_encodings.rs b/spec/rust/tests/test_str_encodings.rs deleted file mode 100644 index 7759fd83f..000000000 --- a/spec/rust/tests/test_str_encodings.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrEncodings; - -#[test] -fn test_str_encodings() { - if let Ok(r) = StrEncodings::from_file("src/str_encodings.bin") { - assert_eq!(r.str1, "Some ASCII"); - assert_eq!(r.str2, "\u{3053}\u{3093}\u{306b}\u{3061}\u{306f}"); - assert_eq!(r.str3, "\u{3053}\u{3093}\u{306b}\u{3061}\u{306f}"); - assert_eq!(r.str4, "\u{2591}\u{2592}\u{2593}"); - } -} diff --git a/spec/rust/tests/test_str_encodings_default.rs b/spec/rust/tests/test_str_encodings_default.rs deleted file mode 100644 index e2cdd782a..000000000 --- a/spec/rust/tests/test_str_encodings_default.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Autogenerated from KST: please remove this line if doing any edits by hand! - -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrEncodingsDefault; - -#[test] -fn test_str_encodings_default() { - if let Ok(r) = StrEncodingsDefault::from_file("src/str_encodings.bin") { - assert_eq!(r.str1, "Some ASCII"); - assert_eq!(r.rest.str2, "\u{3053}\u{3093}\u{306b}\u{3061}\u{306f}"); - assert_eq!(r.rest.str3, "\u{3053}\u{3093}\u{306b}\u{3061}\u{306f}"); - assert_eq!(r.rest.str4, "\u{2591}\u{2592}\u{2593}"); - } -} diff --git a/spec/rust/tests/test_str_eos.rs b/spec/rust/tests/test_str_eos.rs index dda25ba85..0d0a14f15 100644 --- a/spec/rust/tests/test_str_eos.rs +++ b/spec/rust/tests/test_str_eos.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrEos; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::str_eos::*; +use std::fs; #[test] fn test_str_eos() { - if let Ok(r) = StrEos::from_file("src/term_strz.bin") { - assert_eq!(r.str, "foo|bar|baz@"); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = StrEos::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.str, "foo|bar|baz@"); } diff --git a/spec/rust/tests/test_str_literals2.rs b/spec/rust/tests/test_str_literals2.rs index 95c5148a8..2532cb59c 100644 --- a/spec/rust/tests/test_str_literals2.rs +++ b/spec/rust/tests/test_str_literals2.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrLiterals2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::str_literals2::*; +use std::fs; #[test] fn test_str_literals2() { - if let Ok(r) = StrLiterals2::from_file("src/fixed_struct.bin") { - assert_eq!(r.dollar1, "$foo"); - assert_eq!(r.dollar2, "${foo}"); - assert_eq!(r.hash, "#{foo}"); - assert_eq!(r.at_sign, "@foo"); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = StrLiterals2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(dollar1)), Str($foo)) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(dollar2)), Str(${foo})) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(hash)), Str(#{foo})) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(at_sign)), Str(@foo)) } diff --git a/spec/rust/tests/test_str_pad_term.rs b/spec/rust/tests/test_str_pad_term.rs index 8b953fd98..34225e920 100644 --- a/spec/rust/tests/test_str_pad_term.rs +++ b/spec/rust/tests/test_str_pad_term.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrPadTerm; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::str_pad_term::*; +use std::fs; #[test] fn test_str_pad_term() { - if let Ok(r) = StrPadTerm::from_file("src/str_pad_term.bin") { - assert_eq!(r.str_pad, "str1"); - assert_eq!(r.str_term, "str2foo"); - assert_eq!(r.str_term_and_pad, "str+++3bar+++"); - assert_eq!(r.str_term_include, "str4baz@"); - } + let data = fs::read("../../src/str_pad_term.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = StrPadTerm::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.str_pad, "str1"); + assert_eq!(r.str_term, "str2foo"); + assert_eq!(r.str_term_and_pad, "str+++3bar+++"); + assert_eq!(r.str_term_include, "str4baz@"); } diff --git a/spec/rust/tests/test_str_pad_term_empty.rs b/spec/rust/tests/test_str_pad_term_empty.rs index 72ef1bd5c..f8db40310 100644 --- a/spec/rust/tests/test_str_pad_term_empty.rs +++ b/spec/rust/tests/test_str_pad_term_empty.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::StrPadTermEmpty; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::str_pad_term_empty::*; +use std::fs; #[test] fn test_str_pad_term_empty() { - if let Ok(r) = StrPadTermEmpty::from_file("src/str_pad_term_empty.bin") { - assert_eq!(r.str_pad, ""); - assert_eq!(r.str_term, ""); - assert_eq!(r.str_term_and_pad, ""); - assert_eq!(r.str_term_include, "@"); - } + let data = fs::read("../../src/str_pad_term_empty.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = StrPadTermEmpty::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.str_pad, ""); + assert_eq!(r.str_term, ""); + assert_eq!(r.str_term_and_pad, ""); + assert_eq!(r.str_term_include, "@"); } diff --git a/spec/rust/tests/test_switch_bytearray.rs b/spec/rust/tests/test_switch_bytearray.rs index 427692a69..7627fc69d 100644 --- a/spec/rust/tests/test_switch_bytearray.rs +++ b/spec/rust/tests/test_switch_bytearray.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchBytearray; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_bytearray::*; +use std::fs; #[test] fn test_switch_bytearray() { - if let Ok(r) = SwitchBytearray::from_file("src/switch_opcodes.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, vec!([0x53])); - assert_eq!(r.opcodes[0].body.value, "foobar"); - assert_eq!(r.opcodes[1].code, vec!([0x49])); - assert_eq!(r.opcodes[1].body.value, 66); - assert_eq!(r.opcodes[2].code, vec!([0x49])); - assert_eq!(r.opcodes[2].body.value, 55); - assert_eq!(r.opcodes[3].code, vec!([0x53])); - assert_eq!(r.opcodes[3].body.value, ""); - } + let data = fs::read("../../src/switch_opcodes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchBytearray::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), List(ArrayBuffer(IntNum(83)))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_bytearray, opcode, strval),false)),identifier(value)), Str(foobar)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), List(ArrayBuffer(IntNum(73)))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_bytearray, opcode, intval),false)),identifier(value)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), List(ArrayBuffer(IntNum(73)))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_bytearray, opcode, intval),false)),identifier(value)), IntNum(55)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), List(ArrayBuffer(IntNum(83)))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_bytearray, opcode, strval),false)),identifier(value)), Str()) } diff --git a/spec/rust/tests/test_switch_integers.rs b/spec/rust/tests/test_switch_integers.rs index f873b3bda..20e3017c8 100644 --- a/spec/rust/tests/test_switch_integers.rs +++ b/spec/rust/tests/test_switch_integers.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchIntegers; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_integers::*; +use std::fs; #[test] fn test_switch_integers() { - if let Ok(r) = SwitchIntegers::from_file("src/switch_integers.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, 1); - assert_eq!(r.opcodes[0].body, 7); - assert_eq!(r.opcodes[1].code, 2); - assert_eq!(r.opcodes[1].body, 16448); - assert_eq!(r.opcodes[2].code, 4); - assert_eq!(r.opcodes[2].body, 4919); - assert_eq!(r.opcodes[3].code, 8); - assert_eq!(r.opcodes[3].body, 4919); - } + let data = fs::read("../../src/switch_integers.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchIntegers::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), IntNum(1)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)), IntNum(7)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), IntNum(2)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)), IntNum(16448)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)), IntNum(4919)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), IntNum(8)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)), IntNum(4919)) } diff --git a/spec/rust/tests/test_switch_integers2.rs b/spec/rust/tests/test_switch_integers2.rs index 6e7872a2f..182fb6ce1 100644 --- a/spec/rust/tests/test_switch_integers2.rs +++ b/spec/rust/tests/test_switch_integers2.rs @@ -1,18 +1,18 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchIntegers2; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_integers2::*; +use std::fs; #[test] fn test_switch_integers2() { - if let Ok(r) = SwitchIntegers2::from_file("src/switch_integers.bin") { - assert_eq!(r.code, 1); - assert_eq!(r.len, 7); - assert_eq!(r.ham, vec!([0x2, 0x40, 0x40, 0x4, 0x37, 0x13, 0x0])); - assert_eq!(r.padding, 0); - assert_eq!(r.len_mod_str, "13"); - } + let data = fs::read("../../src/switch_integers.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchIntegers2::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.code, 1); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(len)), IntNum(7)) + assert_eq!(r.ham, &[0x2, 0x40, 0x40, 0x4, 0x37, 0x13, 0x0]); + assert_eq!(r.padding, 0); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(len_mod_str)), Str(13)) } diff --git a/spec/rust/tests/test_switch_manual_enum.rs b/spec/rust/tests/test_switch_manual_enum.rs new file mode 100644 index 000000000..2bf0921a8 --- /dev/null +++ b/spec/rust/tests/test_switch_manual_enum.rs @@ -0,0 +1,22 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_enum::*; +use std::fs; + +#[test] +fn test_switch_manual_enum() { + let data = fs::read("../../src/switch_opcodes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualEnum::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), EnumByLabel(identifier(code_enum),identifier(strval),typeId(false,ArrayBuffer(switch_manual_enum, opcode),false))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_enum, opcode, strval),false)),identifier(value)), Str(foobar)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), EnumByLabel(identifier(code_enum),identifier(intval),typeId(false,ArrayBuffer(switch_manual_enum, opcode),false))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_enum, opcode, intval),false)),identifier(value)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), EnumByLabel(identifier(code_enum),identifier(intval),typeId(false,ArrayBuffer(switch_manual_enum, opcode),false))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_enum, opcode, intval),false)),identifier(value)), IntNum(55)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), EnumByLabel(identifier(code_enum),identifier(strval),typeId(false,ArrayBuffer(switch_manual_enum, opcode),false))) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_enum, opcode, strval),false)),identifier(value)), Str()) +} diff --git a/spec/rust/tests/test_switch_manual_int.rs b/spec/rust/tests/test_switch_manual_int.rs index 776a6b1b2..2d26b3c29 100644 --- a/spec/rust/tests/test_switch_manual_int.rs +++ b/spec/rust/tests/test_switch_manual_int.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchManualInt; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_int::*; +use std::fs; #[test] fn test_switch_manual_int() { - if let Ok(r) = SwitchManualInt::from_file("src/switch_opcodes.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, 83); - assert_eq!(r.opcodes[0].body.value, "foobar"); - assert_eq!(r.opcodes[1].code, 73); - assert_eq!(r.opcodes[1].body.value, 66); - assert_eq!(r.opcodes[2].code, 73); - assert_eq!(r.opcodes[2].body.value, 55); - assert_eq!(r.opcodes[3].code, 83); - assert_eq!(r.opcodes[3].body.value, ""); - } + let data = fs::read("../../src/switch_opcodes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualInt::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), IntNum(83)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int, opcode, strval),false)),identifier(value)), Str(foobar)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), IntNum(73)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int, opcode, intval),false)),identifier(value)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), IntNum(73)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int, opcode, intval),false)),identifier(value)), IntNum(55)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), IntNum(83)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int, opcode, strval),false)),identifier(value)), Str()) } diff --git a/spec/rust/tests/test_switch_manual_int_else.rs b/spec/rust/tests/test_switch_manual_int_else.rs index cae8cfba0..1a51c610d 100644 --- a/spec/rust/tests/test_switch_manual_int_else.rs +++ b/spec/rust/tests/test_switch_manual_int_else.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchManualIntElse; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_int_else::*; +use std::fs; #[test] fn test_switch_manual_int_else() { - if let Ok(r) = SwitchManualIntElse::from_file("src/switch_opcodes2.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, 83); - assert_eq!(r.opcodes[0].body.value, "foo"); - assert_eq!(r.opcodes[1].code, 88); - assert_eq!(r.opcodes[1].body.filler, 66); - assert_eq!(r.opcodes[2].code, 89); - assert_eq!(r.opcodes[2].body.filler, 51966); - assert_eq!(r.opcodes[3].code, 73); - assert_eq!(r.opcodes[3].body.value, 7); - } + let data = fs::read("../../src/switch_opcodes2.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualIntElse::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), IntNum(83)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_else, opcode, strval),false)),identifier(value)), Str(foo)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), IntNum(88)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_else, opcode, noneval),false)),identifier(filler)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), IntNum(89)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_else, opcode, noneval),false)),identifier(filler)), IntNum(51966)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), IntNum(73)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_else, opcode, intval),false)),identifier(value)), IntNum(7)) } diff --git a/spec/rust/tests/test_switch_manual_int_size_else.rs b/spec/rust/tests/test_switch_manual_int_size_else.rs index 91e53241c..196bb668e 100644 --- a/spec/rust/tests/test_switch_manual_int_size_else.rs +++ b/spec/rust/tests/test_switch_manual_int_size_else.rs @@ -1,23 +1,23 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchManualIntSizeElse; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_int_size_else::*; +use std::fs; #[test] fn test_switch_manual_int_size_else() { - if let Ok(r) = SwitchManualIntSizeElse::from_file("src/switch_tlv.bin") { - assert_eq!(r.chunks.len(), 4); - assert_eq!(r.chunks[0].code, 17); - assert_eq!(r.chunks[0].body.title, "Stuff"); - assert_eq!(r.chunks[0].body.author, "Me"); - assert_eq!(r.chunks[1].code, 34); - assert_eq!(r.chunks[1].body.entries, ["AAAA", "BBBB", "CCCC"]); - assert_eq!(r.chunks[2].code, 51); - assert_eq!(r.chunks[2].body.rest, vec!([0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80])); - assert_eq!(r.chunks[3].code, 255); - assert_eq!(r.chunks[3].body.rest, vec!([])); - } + let data = fs::read("../../src/switch_tlv.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualIntSizeElse::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(code)), IntNum(17)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_size_else, chunk, chunk_meta),false)),identifier(title)), Str(Stuff)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_size_else, chunk, chunk_meta),false)),identifier(author)), Str(Me)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(code)), IntNum(34)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_size_else, chunk, chunk_dir),false)),identifier(entries)), List(ArrayBuffer(Str(AAAA), Str(BBBB), Str(CCCC)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(2)),identifier(code)), IntNum(51)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_size_else, chunk, dummy),false)),identifier(rest)), List(ArrayBuffer(IntNum(16), IntNum(32), IntNum(48), IntNum(64), IntNum(80), IntNum(96), IntNum(112), IntNum(128)))) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(3)),identifier(code)), IntNum(255)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(chunks)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_int_size_else, chunk, dummy),false)),identifier(rest)), CastToType(List(List()),typeId(false,ArrayBuffer(bytes),false))) } diff --git a/spec/rust/tests/test_switch_manual_str.rs b/spec/rust/tests/test_switch_manual_str.rs index 16b2eb92e..d5a0cc152 100644 --- a/spec/rust/tests/test_switch_manual_str.rs +++ b/spec/rust/tests/test_switch_manual_str.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchManualStr; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_str::*; +use std::fs; #[test] fn test_switch_manual_str() { - if let Ok(r) = SwitchManualStr::from_file("src/switch_opcodes.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, "S"); - assert_eq!(r.opcodes[0].body.value, "foobar"); - assert_eq!(r.opcodes[1].code, "I"); - assert_eq!(r.opcodes[1].body.value, 66); - assert_eq!(r.opcodes[2].code, "I"); - assert_eq!(r.opcodes[2].body.value, 55); - assert_eq!(r.opcodes[3].code, "S"); - assert_eq!(r.opcodes[3].body.value, ""); - } + let data = fs::read("../../src/switch_opcodes.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualStr::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), Str(S)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str, opcode, strval),false)),identifier(value)), Str(foobar)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), Str(I)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str, opcode, intval),false)),identifier(value)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), Str(I)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str, opcode, intval),false)),identifier(value)), IntNum(55)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), Str(S)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str, opcode, strval),false)),identifier(value)), Str()) } diff --git a/spec/rust/tests/test_switch_manual_str_else.rs b/spec/rust/tests/test_switch_manual_str_else.rs index c27d75a23..9a6736b4c 100644 --- a/spec/rust/tests/test_switch_manual_str_else.rs +++ b/spec/rust/tests/test_switch_manual_str_else.rs @@ -1,22 +1,22 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::SwitchManualStrElse; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::switch_manual_str_else::*; +use std::fs; #[test] fn test_switch_manual_str_else() { - if let Ok(r) = SwitchManualStrElse::from_file("src/switch_opcodes2.bin") { - assert_eq!(r.opcodes.len(), 4); - assert_eq!(r.opcodes[0].code, "S"); - assert_eq!(r.opcodes[0].body.value, "foo"); - assert_eq!(r.opcodes[1].code, "X"); - assert_eq!(r.opcodes[1].body.filler, 66); - assert_eq!(r.opcodes[2].code, "Y"); - assert_eq!(r.opcodes[2].body.filler, 51966); - assert_eq!(r.opcodes[3].code, "I"); - assert_eq!(r.opcodes[3].body.value, 7); - } + let data = fs::read("../../src/switch_opcodes2.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = SwitchManualStrElse::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),identifier(size)), IntNum(4)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(code)), Str(S)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(0)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str_else, opcode, strval),false)),identifier(value)), Str(foo)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(code)), Str(X)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(1)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str_else, opcode, noneval),false)),identifier(filler)), IntNum(66)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(code)), Str(Y)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(2)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str_else, opcode, noneval),false)),identifier(filler)), IntNum(51966)) + // assert_eq!(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(code)), Str(I)) + // assert_eq!(Attribute(CastToType(Attribute(Subscript(Attribute(Name(identifier(q1w2e3)),identifier(opcodes)),IntNum(3)),identifier(body)),typeId(false,ArrayBuffer(switch_manual_str_else, opcode, intval),false)),identifier(value)), IntNum(7)) } diff --git a/spec/rust/tests/test_term_bytes.rs b/spec/rust/tests/test_term_bytes.rs index 23375a5fa..618707264 100644 --- a/spec/rust/tests/test_term_bytes.rs +++ b/spec/rust/tests/test_term_bytes.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::TermBytes; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::term_bytes::*; +use std::fs; #[test] fn test_term_bytes() { - if let Ok(r) = TermBytes::from_file("src/term_strz.bin") { - assert_eq!(r.s1, vec!([0x66, 0x6f, 0x6f])); - assert_eq!(r.s2, vec!([0x62, 0x61, 0x72])); - assert_eq!(r.s3, vec!([0x7c, 0x62, 0x61, 0x7a, 0x40])); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = TermBytes::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.s1, &[0x66, 0x6f, 0x6f]); + assert_eq!(r.s2, &[0x62, 0x61, 0x72]); + assert_eq!(r.s3, &[0x7c, 0x62, 0x61, 0x7a, 0x40]); } diff --git a/spec/rust/tests/test_term_strz.rs b/spec/rust/tests/test_term_strz.rs index c40bce5cd..d4a0894cd 100644 --- a/spec/rust/tests/test_term_strz.rs +++ b/spec/rust/tests/test_term_strz.rs @@ -1,16 +1,16 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::TermStrz; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::term_strz::*; +use std::fs; #[test] fn test_term_strz() { - if let Ok(r) = TermStrz::from_file("src/term_strz.bin") { - assert_eq!(r.s1, "foo"); - assert_eq!(r.s2, "bar"); - assert_eq!(r.s3, "|baz@"); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = TermStrz::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.s1, "foo"); + assert_eq!(r.s2, "bar"); + assert_eq!(r.s3, "|baz@"); } diff --git a/spec/rust/tests/test_ts_packet_header.rs b/spec/rust/tests/test_ts_packet_header.rs new file mode 100644 index 000000000..2f739289e --- /dev/null +++ b/spec/rust/tests/test_ts_packet_header.rs @@ -0,0 +1,20 @@ +// Autogenerated from KST: please remove this line if doing any edits by hand! + +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::ts_packet_header::*; +use std::fs; + +#[test] +fn test_ts_packet_header() { + let data = fs::read("../../src/ts_packet.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = TsPacketHeader::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.sync_byte, 71); + assert_eq!(r.transport_error_indicator, false); + assert_eq!(r.payload_unit_start_indicator, false); + assert_eq!(r.transport_priority, true); + assert_eq!(r.pid, 33); + assert_eq!(r.transport_scrambling_control, 0); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(adaptation_field_control)), EnumByLabel(identifier(adaptation_field_control_enum),identifier(payload_only),typeId(false,ArrayBuffer(ts_packet_header),false))) +} diff --git a/spec/rust/tests/test_type_int_unary_op.rs b/spec/rust/tests/test_type_int_unary_op.rs index cdc32dfe2..1fc5c8c27 100644 --- a/spec/rust/tests/test_type_int_unary_op.rs +++ b/spec/rust/tests/test_type_int_unary_op.rs @@ -1,17 +1,17 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::TypeIntUnaryOp; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::type_int_unary_op::*; +use std::fs; #[test] fn test_type_int_unary_op() { - if let Ok(r) = TypeIntUnaryOp::from_file("src/fixed_struct.bin") { - assert_eq!(r.value_s2, 16720); - assert_eq!(r.value_s8, 4706543082108963651); - assert_eq!(r.unary_s2, -16720); - assert_eq!(r.unary_s8, -4706543082108963651); - } + let data = fs::read("../../src/fixed_struct.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = TypeIntUnaryOp::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.value_s2, 16720); + assert_eq!(r.value_s8, 4706543082108963651); + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(unary_s2)), UnaryOp(Minus,IntNum(16720))) + // assert_eq!(Attribute(Name(identifier(q1w2e3)),identifier(unary_s8)), UnaryOp(Minus,IntNum(4706543082108963651))) } diff --git a/spec/rust/tests/test_type_ternary.rs b/spec/rust/tests/test_type_ternary.rs index 6e2412116..fd2146ee2 100644 --- a/spec/rust/tests/test_type_ternary.rs +++ b/spec/rust/tests/test_type_ternary.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::TypeTernary; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::type_ternary::*; +use std::fs; #[test] fn test_type_ternary() { - if let Ok(r) = TypeTernary::from_file("src/term_strz.bin") { - assert_eq!(r.dif.value, 101); - } + let data = fs::read("../../src/term_strz.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = TypeTernary::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(dif)),identifier(value)), IntNum(101)) } diff --git a/spec/rust/tests/test_user_type.rs b/spec/rust/tests/test_user_type.rs index 358ec2130..f3fa809f5 100644 --- a/spec/rust/tests/test_user_type.rs +++ b/spec/rust/tests/test_user_type.rs @@ -1,15 +1,15 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::UserType; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::user_type::*; +use std::fs; #[test] fn test_user_type() { - if let Ok(r) = UserType::from_file("src/repeat_until_s4.bin") { - assert_eq!(r.one.width, 66); - assert_eq!(r.one.height, 4919); - } + let data = fs::read("../../src/repeat_until_s4.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = UserType::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(width)), IntNum(66)) + // assert_eq!(Attribute(Attribute(Name(identifier(q1w2e3)),identifier(one)),identifier(height)), IntNum(4919)) } diff --git a/spec/rust/tests/test_zlib_with_header_78.rs b/spec/rust/tests/test_zlib_with_header_78.rs index 8001b37bf..7484b3fbc 100644 --- a/spec/rust/tests/test_zlib_with_header_78.rs +++ b/spec/rust/tests/test_zlib_with_header_78.rs @@ -1,14 +1,14 @@ // Autogenerated from KST: please remove this line if doing any edits by hand! -extern crate kaitai_struct; -extern crate rust; - -use kaitai_struct::KaitaiStruct; -use rust::ZlibWithHeader78; +use kaitai::{BytesReader, KStruct, KStructUnit}; +use kaitai_test::zlib_with_header_78::*; +use std::fs; #[test] fn test_zlib_with_header_78() { - if let Ok(r) = ZlibWithHeader78::from_file("src/zlib_with_header_78.bin") { - assert_eq!(r.data, vec!([0x61, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x6f, 0x78, 0x20, 0x6a, 0x75, 0x6d, 0x70, 0x73, 0x20, 0x6f, 0x76, 0x65, 0x72])); - } + let data = fs::read("../../src/zlib_with_header_78.bin").expect("Unable to read data."); + let reader = BytesReader::new(&data[..]); + let mut r = ZlibWithHeader78::default(); + r.read(&reader, None, KStructUnit::parent_stack()).expect("Unable to parse data."); + assert_eq!(r.data, &[0x61, 0x20, 0x71, 0x75, 0x69, 0x63, 0x6b, 0x20, 0x62, 0x72, 0x6f, 0x77, 0x6e, 0x20, 0x66, 0x6f, 0x78, 0x20, 0x6a, 0x75, 0x6d, 0x70, 0x73, 0x20, 0x6f, 0x76, 0x65, 0x72]); } diff --git a/translator/src/main/scala/io/kaitai/struct/testtranslator/specgenerators/RustSG.scala b/translator/src/main/scala/io/kaitai/struct/testtranslator/specgenerators/RustSG.scala index 560f93c76..f22241f26 100644 --- a/translator/src/main/scala/io/kaitai/struct/testtranslator/specgenerators/RustSG.scala +++ b/translator/src/main/scala/io/kaitai/struct/testtranslator/specgenerators/RustSG.scala @@ -1,66 +1,132 @@ package io.kaitai.struct.testtranslator.specgenerators -import _root_.io.kaitai.struct.{ClassTypeProvider, RuntimeConfig} -import _root_.io.kaitai.struct.datatype.DataType -import _root_.io.kaitai.struct.datatype.DataType._ -import _root_.io.kaitai.struct.exprlang.Ast -import _root_.io.kaitai.struct.languages.RustCompiler import _root_.io.kaitai.struct.testtranslator.{Main, TestAssert, TestSpec} -import _root_.io.kaitai.struct.translators.RustTranslator +import io.kaitai.struct.datatype.DataType +import io.kaitai.struct.datatype.DataType.{EnumType, SwitchType} +import io.kaitai.struct.exprlang.Ast +import io.kaitai.struct.exprlang.Ast.expr.{Attribute, CastToType, Subscript} +import io.kaitai.struct.format.NamedIdentifier +import io.kaitai.struct.languages.RustCompiler +import io.kaitai.struct.translators.RustTranslator +import io.kaitai.struct.{ClassTypeProvider, RuntimeConfig} -class RustSG(spec: TestSpec, provider: ClassTypeProvider) extends BaseGenerator(spec) { - val className = RustCompiler.type2class(spec.id) +class RustSG(spec: TestSpec, provider: ClassTypeProvider) + extends BaseGenerator(spec) { + val className: String = RustCompiler.type2class(spec.id) val translator = new RustTranslator(provider, RuntimeConfig()) - override def fileName(name: String): String = s"test_$name.rs" + override def fileName(name: String): String = s"tests/test_$name.rs" override def header(): Unit = { - out.puts("extern crate kaitai_struct;") - out.puts(s"extern crate rust;") - out.puts - - out.puts("use kaitai_struct::KaitaiStruct;") - out.puts(s"use rust::$className;") + out.puts("use kaitai::{BytesReader, KStruct, KStructUnit};") + out.puts(s"use kaitai_test::${spec.id}::*;") + out.puts(s"use std::fs;") out.puts out.puts("#[test]") out.puts(s"fn test_${spec.id}() {") out.inc - out.puts("if let Ok(r) = " + className + "::from_file(\"src/" + spec.data + "\") {") - out.inc + out.puts( + "let data = fs::read(\"../../src/" + spec.data + "\").expect(\"Unable to read data.\");" + ) + out.puts("let reader = BytesReader::new(&data[..]);") + out.puts(s"let mut r = $className::default();") + out.puts( + "r.read(&reader, None, KStructUnit::parent_stack()).expect(\"Unable to parse data.\");" + ) } override def footer(): Unit = { out.dec out.puts("}") - out.dec - out.puts("}") } - override def simpleAssert(check: TestAssert): Unit = { - val actStr = translateAct(check.actual) - val expStr = translator.translate(check.expected) - out.puts(s"assert_eq!($actStr, $expStr);") + override def nullAssert(actual: Ast.expr): Unit = { + out.puts(s"// nullAsset(${translateActual(actual)});") } - override def nullAssert(actual: Ast.expr): Unit = { - val actStr = translateAct(actual) - out.puts(s"assertNull($actStr);") - // TODO: Figure out what's meant to happen here + override def trueArrayAssert(check: TestAssert, + elType: DataType, + elts: Seq[Ast.expr]): Unit = { + simpleAssert(check) } - override def trueArrayAssert(check: TestAssert, elType: DataType, elts: Seq[Ast.expr]): Unit = { - simpleAssert(check) // FIXME + override def simpleAssert(check: TestAssert): Unit = { + + // TODO: Fix attribute chaining + check.actual match { + case attribute: Attribute if attribute.value.isInstanceOf[Attribute] => + out.puts(s"// assert_eq!(${check.actual}, ${check.expected})") + return + case attribute: Attribute if attribute.value.isInstanceOf[Subscript] => + out.puts(s"// assert_eq!(${check.actual}, ${check.expected})") + return + case attribute: Attribute if attribute.value.isInstanceOf[CastToType] => + out.puts(s"// assert_eq!(${check.actual}, ${check.expected})") + return + case _ => () + } + + // TODO: Fix instance unwrapping + val attrName = check.actual.asInstanceOf[Attribute].attr + val classSpec = provider.resolveClassSpec(provider.nowClass, spec.id) + if (classSpec.instances.exists(i => i._1.name == attrName.name)) { + out.puts(s"// assert_eq!(${check.actual}, ${check.expected})") + return + } + + // Normally you'd want to look up types through `translator.detectType`, + // but that doesn't properly handle things like SwitchType + // TODO: Fix enum equality checks + val attrType = classSpec.seq.find(a => a.id == NamedIdentifier(attrName.name)) + attrType match { + case Some(a) if a.dataType.isInstanceOf[EnumType] || a.dataType.isInstanceOf[SwitchType] => + out.puts(s"// assert_eq!(${check.actual}, ${check.expected})") + return + case _ => () + } + + out.puts(s"assert_eq!(${translateActual(check.actual)}, ${translator.translate(check.expected)});") } + def translateActual(actual: Ast.expr): String = + // Because we will try to look up attributes as if they're on `Main.INIT_OBJ_NAME`, + // trim that out of the lookup path + translator.translate(actual).replace("self." + Main.INIT_OBJ_NAME, "r") + override def indentStr: String = " " - override def results: String = { - "// " + AUTOGEN_COMMENT + "\n\n" + - out.result - } + override def results: String = "// " + AUTOGEN_COMMENT + "\n\n" + out.result + + def actualIsOptional(x: Ast.expr): Boolean = { + // TODO: Need a much more robust way to check for `Option<>` types + val attrName = x match { + case a: Attribute => a.attr + case _ => return false + } - def translateAct(x: Ast.expr) = - translator.translate(x).replace("self." + Main.INIT_OBJ_NAME, "r") + // If it's an instance, it's guaranteed to be optional + if (provider + .resolveClassSpec(provider.nowClass, spec.id) + .instances + .keys + .exists(p => p.name == attrName.name)) + return true + + // Look up the type from the struct definition; `detectType` doesn't + // properly handle `SwitchType` for example + val seqType = provider + .resolveClassSpec(provider.nowClass, spec.id) + .seq + .filter(a => a.id == NamedIdentifier(attrName.name)) + .head + + seqType.dataType match { + case _: EnumType | _: SwitchType => return true + case _ => () + } + + false + } }