From 6d721813f1b593c02c45b44a3039fbdab8a34c5b Mon Sep 17 00:00:00 2001 From: Paul Hauner Date: Fri, 3 May 2019 13:43:52 +1000 Subject: [PATCH] Fix failing SOS nested vec tests --- eth2/utils/ssz2/src/decode/impls.rs | 117 +--------------------------- eth2/utils/ssz2/tests/tests.rs | 5 ++ 2 files changed, 7 insertions(+), 115 deletions(-) diff --git a/eth2/utils/ssz2/src/decode/impls.rs b/eth2/utils/ssz2/src/decode/impls.rs index d92730b017..1ad645b54d 100644 --- a/eth2/utils/ssz2/src/decode/impls.rs +++ b/eth2/utils/ssz2/src/decode/impls.rs @@ -53,23 +53,16 @@ impl Decodable for Vec { } else { let (fixed, variable) = bytes.split_at(read_length(bytes)?); - dbg!(fixed); - dbg!(variable); - let num_elems = fixed.len() / BYTES_PER_LENGTH_OFFSET; - - dbg!(num_elems); - let mut offset = 0; - let mut values = vec![]; for i in 1..=num_elems { - let chunk = &bytes[(i - 1) * BYTES_PER_LENGTH_OFFSET..i * BYTES_PER_LENGTH_OFFSET]; - let slice = if i == num_elems { &variable[offset..] } else { + let chunk = + &bytes[i * BYTES_PER_LENGTH_OFFSET..(i + 1) * BYTES_PER_LENGTH_OFFSET]; let start = offset; offset = decode_length(chunk)? - fixed.len(); @@ -80,112 +73,6 @@ impl Decodable for Vec { } Ok(values) - - /* - fixed - .chunks(BYTES_PER_LENGTH_OFFSET) - .skip(1) - .map(|chunk| { - let start = offset; - offset += decode_length(chunk)?; - Ok(start..offset) - }) - .chain(vec![Ok(offset..variable.len())].into_iter()) - .map(|range| T::from_ssz_bytes(&variable[range?])) - .collect() - */ - - /* - for i in 1..=num_elems { - let chunk = &bytes[i * BYTES_PER_LENGTH_OFFSET..(i + 1) * BYTES_PER_LENGTH_OFFSET]; - - let end = offset + decode_length(chunk)?; - let slice = &variable[offset..end]; - offset += end; - - values.push(T::from_ssz_bytes(slice)?); - - if i == num_elems { - let slice = &variable[offset..]; - values.push(T::from_ssz_bytes(slice)?) - } - } - - */ - - /* - (0..num_elems) - .into_iter() - .skip(1) - .map(|(i, chunk)| { - let end = offset + decode_length(chunk)?; - let slice = &bytes[offset..end]; - offset += end; - - T::from_ssz_bytes(slice) - - if i == num_elems { - let slice = &bytes[offset..]; - T::from_ssz_bytes(slice) - } - }) - .collect() - - fixed - .chunks(BYTES_PER_LENGTH_OFFSET) - .skip(1) - .enumerate() - .map(|(i, chunk)| { - let end = offset + decode_length(chunk)?; - let slice = &bytes[offset..end]; - offset += end; - - T::from_ssz_bytes(slice) - }) - .collect() - - - fixed - .chunks(BYTES_PER_LENGTH_OFFSET) - .skip(1) - .map(|chunk| { - let end = offset + decode_length(chunk)?; - let slice = &bytes[offset..end]; - offset += end; - - T::from_ssz_bytes(slice) - }) - .collect() - - - let mut i = 0; - // let mut values = vec![]; - - bytes - .get(0..offset) - .ok_or_else(|| DecodeError::InvalidByteLength { - expected: offset, - len: bytes.len(), - })? - .chunks(BYTES_PER_LENGTH_OFFSET) - .skip(1) - .map(|chunk| { - let end = offset + decode_length(chunk)?; - let slice = &bytes[offset..end]; - offset += end; - - T::from_ssz_bytes(slice) - }) - .collect() - - // .collect::, DecodeError>>()?; - - let (fixed, variable) = bytes.split_at(read_length(bytes)?); - - let mut offset = decode_length(); - */ - - //panic!("TODO") } } } diff --git a/eth2/utils/ssz2/tests/tests.rs b/eth2/utils/ssz2/tests/tests.rs index fa1500f22c..bc22cbba12 100644 --- a/eth2/utils/ssz2/tests/tests.rs +++ b/eth2/utils/ssz2/tests/tests.rs @@ -18,7 +18,12 @@ fn vec_u16_round_trip() { fn vec_of_vec_u16_round_trip() { round_trip::>>(vec![]); round_trip::>>(vec![vec![]]); + round_trip::>>(vec![vec![1, 2, 3]]); round_trip::>>(vec![vec![], vec![]]); round_trip::>>(vec![vec![], vec![1, 2, 3]]); round_trip::>>(vec![vec![1, 2, 3], vec![1, 2, 3]]); + round_trip::>>(vec![vec![1, 2, 3], vec![], vec![1, 2, 3]]); + round_trip::>>(vec![vec![], vec![], vec![1, 2, 3]]); + round_trip::>>(vec![vec![], vec![1], vec![1, 2, 3]]); + round_trip::>>(vec![vec![], vec![1], vec![1, 2, 3]]); }