fix the endianess

This commit is contained in:
Jean-Marie 'Histausse' Mineau 2023-08-31 16:57:05 +02:00
parent 68b11dc036
commit a4e5679c7b
Signed by: histausse
GPG key ID: B66AEEDA9B645AD2
4 changed files with 98 additions and 108 deletions

View file

@ -257,10 +257,10 @@ mod test {
fn test_endianconstant() { fn test_endianconstant() {
assert_eq!( assert_eq!(
EndianConstant::EndianConstant.serialize_to_vec().unwrap(), EndianConstant::EndianConstant.serialize_to_vec().unwrap(),
vec![0x12, 0x34, 0x56, 0x78] vec![0x78, 0x56, 0x34, 0x12]
); );
assert_eq!( assert_eq!(
EndianConstant::deserialize_from_slice(&[0x12, 0x34, 0x56, 0x78]).unwrap(), EndianConstant::deserialize_from_slice(&[0x78, 0x56, 0x34, 0x12]).unwrap(),
EndianConstant::EndianConstant EndianConstant::EndianConstant
); );
} }

View file

@ -116,7 +116,7 @@ impl<D: Serializable, U: Serializable + Eq> SerializableUntil<D, U> for Vec<D> {
impl Serializable for u8 { impl Serializable for u8 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize u8 to output: {err}")) Error::SerializationError(format!("Failed to write serialize u8 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -127,7 +127,7 @@ impl Serializable for u8 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for u8 from the input".into()) Error::InputTooSmall("Failed to read all bytes for u8 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -137,7 +137,7 @@ impl Serializable for u8 {
impl Serializable for i8 { impl Serializable for i8 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize i8 to output: {err}")) Error::SerializationError(format!("Failed to write serialize i8 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -148,7 +148,7 @@ impl Serializable for i8 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for i8 from the input".into()) Error::InputTooSmall("Failed to read all bytes for i8 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -158,7 +158,7 @@ impl Serializable for i8 {
impl Serializable for u16 { impl Serializable for u16 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize u16 to output: {err}")) Error::SerializationError(format!("Failed to write serialize u16 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -169,7 +169,7 @@ impl Serializable for u16 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for u16 from the input".into()) Error::InputTooSmall("Failed to read all bytes for u16 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -179,7 +179,7 @@ impl Serializable for u16 {
impl Serializable for i16 { impl Serializable for i16 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize i16 to output: {err}")) Error::SerializationError(format!("Failed to write serialize i16 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -190,7 +190,7 @@ impl Serializable for i16 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for i16 from the input".into()) Error::InputTooSmall("Failed to read all bytes for i16 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -200,7 +200,7 @@ impl Serializable for i16 {
impl Serializable for u32 { impl Serializable for u32 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize u32 to output: {err}")) Error::SerializationError(format!("Failed to write serialize u32 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -211,7 +211,7 @@ impl Serializable for u32 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for u32 from the input".into()) Error::InputTooSmall("Failed to read all bytes for u32 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -221,7 +221,7 @@ impl Serializable for u32 {
impl Serializable for i32 { impl Serializable for i32 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize i32 to output: {err}")) Error::SerializationError(format!("Failed to write serialize i32 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -232,7 +232,7 @@ impl Serializable for i32 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for i32 from the input".into()) Error::InputTooSmall("Failed to read all bytes for i32 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -242,7 +242,7 @@ impl Serializable for i32 {
impl Serializable for u64 { impl Serializable for u64 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize u64 to output: {err}")) Error::SerializationError(format!("Failed to write serialize u64 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -253,7 +253,7 @@ impl Serializable for u64 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for u64 from the input".into()) Error::InputTooSmall("Failed to read all bytes for u64 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -263,7 +263,7 @@ impl Serializable for u64 {
impl Serializable for i64 { impl Serializable for i64 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize i64 to output: {err}")) Error::SerializationError(format!("Failed to write serialize i64 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -274,7 +274,7 @@ impl Serializable for i64 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for i64 from the input".into()) Error::InputTooSmall("Failed to read all bytes for i64 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -284,7 +284,7 @@ impl Serializable for i64 {
impl Serializable for u128 { impl Serializable for u128 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize u128 to output: {err}")) Error::SerializationError(format!("Failed to write serialize u128 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -295,7 +295,7 @@ impl Serializable for u128 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for u128 from the input".into()) Error::InputTooSmall("Failed to read all bytes for u128 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -305,7 +305,7 @@ impl Serializable for u128 {
impl Serializable for i128 { impl Serializable for i128 {
fn serialize(&self, output: &mut dyn Write) -> Result<()> { fn serialize(&self, output: &mut dyn Write) -> Result<()> {
output.write_all(&self.to_be_bytes()).map_err(|err| { output.write_all(&self.to_le_bytes()).map_err(|err| {
Error::SerializationError(format!("Failed to write serialize i128 to output: {err}")) Error::SerializationError(format!("Failed to write serialize i128 to output: {err}"))
})?; })?;
Ok(()) Ok(())
@ -316,7 +316,7 @@ impl Serializable for i128 {
input.read_exact(&mut buffer).map_err(|_| { input.read_exact(&mut buffer).map_err(|_| {
Error::InputTooSmall("Failed to read all bytes for i128 from the input".into()) Error::InputTooSmall("Failed to read all bytes for i128 from the input".into())
})?; })?;
Ok(Self::from_be_bytes(buffer)) Ok(Self::from_le_bytes(buffer))
} }
fn size(&self) -> usize { fn size(&self) -> usize {
@ -347,13 +347,13 @@ mod test {
#[test] #[test]
fn serialize_u16() { fn serialize_u16() {
assert_eq!(0x1234u16.serialize_to_vec().unwrap(), vec![0x12u8, 0x34u8]); assert_eq!(0x1234u16.serialize_to_vec().unwrap(), vec![0x34u8, 0x12u8]);
} }
#[test] #[test]
fn deserialize_u16() { fn deserialize_u16() {
assert_eq!( assert_eq!(
u16::deserialize_from_slice(&[0x12u8, 0x34u8]).unwrap(), u16::deserialize_from_slice(&[0x34u8, 0x12u8]).unwrap(),
0x1234u16 0x1234u16
); );
} }
@ -367,14 +367,14 @@ mod test {
fn serialize_u32() { fn serialize_u32() {
assert_eq!( assert_eq!(
0x12345678u32.serialize_to_vec().unwrap(), 0x12345678u32.serialize_to_vec().unwrap(),
vec![0x12u8, 0x34u8, 0x56u8, 0x78u8] vec![0x78u8, 0x56u8, 0x34u8, 0x12u8]
); );
} }
#[test] #[test]
fn deserialize_u32() { fn deserialize_u32() {
assert_eq!( assert_eq!(
u32::deserialize_from_slice(&[0x12u8, 0x34u8, 0x56u8, 0x78u8]).unwrap(), u32::deserialize_from_slice(&[0x78u8, 0x56u8, 0x34u8, 0x12u8]).unwrap(),
0x12345678u32 0x12345678u32
); );
} }
@ -388,7 +388,7 @@ mod test {
fn serialize_u64() { fn serialize_u64() {
assert_eq!( assert_eq!(
0x123456789ABCDEF0u64.serialize_to_vec().unwrap(), 0x123456789ABCDEF0u64.serialize_to_vec().unwrap(),
vec![0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8] vec![0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8]
); );
} }
@ -396,7 +396,7 @@ mod test {
fn deserialize_u64() { fn deserialize_u64() {
assert_eq!( assert_eq!(
u64::deserialize_from_slice(&[ u64::deserialize_from_slice(&[
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8
]) ])
.unwrap(), .unwrap(),
0x123456789ABCDEF0u64 0x123456789ABCDEF0u64
@ -415,8 +415,8 @@ mod test {
.serialize_to_vec() .serialize_to_vec()
.unwrap(), .unwrap(),
vec![ vec![
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, 0xF0u8, 0xDEu8,
0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8,
] ]
); );
} }
@ -425,8 +425,8 @@ mod test {
fn deserialize_u128() { fn deserialize_u128() {
assert_eq!( assert_eq!(
u128::deserialize_from_slice(&[ u128::deserialize_from_slice(&[
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0xF0u8, 0xDEu8, 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8, 0xF0u8, 0xDEu8,
0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8 0xBCu8, 0x9Au8, 0x78u8, 0x56u8, 0x34u8, 0x12u8,
]) ])
.unwrap(), .unwrap(),
0x123456789ABCDEF0123456789ABCDEF0u128 0x123456789ABCDEF0123456789ABCDEF0u128
@ -462,10 +462,9 @@ mod test {
assert_eq!( assert_eq!(
t.serialize_to_vec().unwrap(), t.serialize_to_vec().unwrap(),
vec![ vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x2a, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0x56, 0x34, 0x12
0xF0u8
] ]
); );
} }
@ -480,9 +479,9 @@ mod test {
0x123456789ABCDEF0123456789ABCDEF0u128, 0x123456789ABCDEF0123456789ABCDEF0u128,
); );
let serialized = vec![ let serialized = vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x2a, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x56, 0x34, 0x12,
]; ];
assert_eq!( assert_eq!(
UnamedComposedTest::deserialize_from_slice(&serialized).unwrap(), UnamedComposedTest::deserialize_from_slice(&serialized).unwrap(),
@ -537,19 +536,16 @@ mod test {
assert_eq!( assert_eq!(
t.serialize_to_vec().unwrap(), t.serialize_to_vec().unwrap(),
vec![ vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8
] ]
); );
} }
@ -575,18 +571,16 @@ mod test {
], ],
); );
let serialized = vec![ let serialized = vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78,
0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x56, 0x34, 0x12,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8,
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8,
]; ];
assert_eq!( assert_eq!(
UnamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(), UnamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(),
@ -640,20 +634,17 @@ mod test {
assert_eq!( assert_eq!(
t.serialize_to_vec().unwrap(), t.serialize_to_vec().unwrap(),
vec![ vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x56, 0x34, 0x12
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, ],
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8
]
); );
} }
@ -678,18 +669,16 @@ mod test {
], ],
}; };
let serialized = vec![ let serialized = vec![
42u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x2a, 0x34, 0x12, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78, 0x56, 0x34, 0x12, 0x78,
0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc,
0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0,
0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34,
0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78, 0x56, 0x34, 0x12, 0xf0, 0xde, 0xbc, 0x9a, 0x78,
0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0x56, 0x34, 0x12,
0xBCu8, 0xDEu8, 0xF0u8, 0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8,
0x12u8, 0x34u8, 0x56u8, 0x78u8, 0x9Au8, 0xBCu8, 0xDEu8, 0xF0u8,
]; ];
assert_eq!( assert_eq!(
NamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(), NamedArrayComposedTest::deserialize_from_slice(&serialized).unwrap(),
@ -790,7 +779,7 @@ mod test {
}; };
assert_eq!( assert_eq!(
v.serialize_to_vec().unwrap(), v.serialize_to_vec().unwrap(),
vec![0, 0, 1, 2, 3, 0, 0, 0x80, 0, 0, 0], vec![0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0x80],
); );
} }
@ -801,7 +790,7 @@ mod test {
v: vec![1, 2, 3], v: vec![1, 2, 3],
ps: 0x80000000, ps: 0x80000000,
}; };
let s = &[0, 0, 1, 2, 3, 0, 0, 0x80, 0, 0, 0]; let s = &[0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0x80];
assert_eq!( assert_eq!(
v, v,
SerializableUntilNamed::deserialize_from_slice(s).unwrap() SerializableUntilNamed::deserialize_from_slice(s).unwrap()
@ -831,11 +820,11 @@ mod test {
assert_eq!(TestEnum::Zero.serialize_to_vec().unwrap(), vec![0u8]); assert_eq!(TestEnum::Zero.serialize_to_vec().unwrap(), vec![0u8]);
assert_eq!( assert_eq!(
TestEnum::One(42).serialize_to_vec().unwrap(), TestEnum::One(42).serialize_to_vec().unwrap(),
vec![1u8, 0u8, 0u8, 0u8, 42u8] vec![1u8, 42u8, 0u8, 0u8, 0u8]
); );
assert_eq!( assert_eq!(
TestEnum::Two { a: 1, b: 2 }.serialize_to_vec().unwrap(), TestEnum::Two { a: 1, b: 2 }.serialize_to_vec().unwrap(),
vec![2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8] vec![2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8]
); );
} }
@ -846,11 +835,11 @@ mod test {
TestEnum::Zero TestEnum::Zero
); );
assert_eq!( assert_eq!(
TestEnum::deserialize_from_slice(&[1u8, 0u8, 0u8, 0u8, 42u8]).unwrap(), TestEnum::deserialize_from_slice(&[1u8, 42u8, 0u8, 0u8, 0u8]).unwrap(),
TestEnum::One(42) TestEnum::One(42)
); );
assert_eq!( assert_eq!(
TestEnum::deserialize_from_slice(&[2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8]).unwrap(), TestEnum::deserialize_from_slice(&[2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8]).unwrap(),
TestEnum::Two { a: 1, b: 2 } TestEnum::Two { a: 1, b: 2 }
); );
assert!(TestEnum::deserialize_from_slice(&[255u8]).is_err()); assert!(TestEnum::deserialize_from_slice(&[255u8]).is_err());
@ -866,7 +855,7 @@ mod test {
#[test] #[test]
fn deserialize_prefix_suffix() { fn deserialize_prefix_suffix() {
assert_eq!( assert_eq!(
TestPrefixSuffix::deserialize_from_slice(&[0x42, 0, 1, 2, 3, 0x66, 0x66]).unwrap(), TestPrefixSuffix::deserialize_from_slice(&[0x42, 3, 2, 1, 0, 0x66, 0x66]).unwrap(),
TestPrefixSuffix { a: 0x00010203 } TestPrefixSuffix { a: 0x00010203 }
); );
} }
@ -877,7 +866,7 @@ mod test {
TestPrefixSuffix { a: 0x00010203 } TestPrefixSuffix { a: 0x00010203 }
.serialize_to_vec() .serialize_to_vec()
.unwrap(), .unwrap(),
vec![0x42, 0, 1, 2, 3, 0x66, 0x66] vec![0x42, 3, 2, 1, 0, 0x66, 0x66]
); );
} }
@ -910,19 +899,19 @@ mod test {
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::One(42).serialize_to_vec().unwrap(), TestEnumUnnamedDef::One(42).serialize_to_vec().unwrap(),
vec![1u8, 0u8, 0u8, 0u8, 42u8] vec![1u8, 42u8, 0u8, 0u8, 0u8]
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::Two { a: 1, b: 2 } TestEnumUnnamedDef::Two { a: 1, b: 2 }
.serialize_to_vec() .serialize_to_vec()
.unwrap(), .unwrap(),
vec![2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8] vec![2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8]
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::Dft(42, 0x01234567) TestEnumUnnamedDef::Dft(42, 0x01234567)
.serialize_to_vec() .serialize_to_vec()
.unwrap(), .unwrap(),
vec![42u8, 0x01u8, 0x23u8, 0x45, 0x67], vec![42u8, 0x67, 0x45, 0x23, 0x01u8],
); );
} }
@ -933,16 +922,16 @@ mod test {
TestEnumUnnamedDef::Zero TestEnumUnnamedDef::Zero
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::deserialize_from_slice(&[1u8, 0u8, 0u8, 0u8, 42u8]).unwrap(), TestEnumUnnamedDef::deserialize_from_slice(&[1u8, 42u8, 0u8, 0u8, 0u8]).unwrap(),
TestEnumUnnamedDef::One(42) TestEnumUnnamedDef::One(42)
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::deserialize_from_slice(&[2u8, 0u8, 1u8, 0u8, 0u8, 0u8, 2u8]) TestEnumUnnamedDef::deserialize_from_slice(&[2u8, 1u8, 0u8, 2u8, 0u8, 0u8, 0u8])
.unwrap(), .unwrap(),
TestEnumUnnamedDef::Two { a: 1, b: 2 } TestEnumUnnamedDef::Two { a: 1, b: 2 }
); );
assert_eq!( assert_eq!(
TestEnumUnnamedDef::deserialize_from_slice(&[42u8, 0x01u8, 0x23u8, 0x45, 0x67]) TestEnumUnnamedDef::deserialize_from_slice(&[42u8, 0x67, 0x45, 0x23u8, 0x01u8])
.unwrap(), .unwrap(),
TestEnumUnnamedDef::Dft(42, 0x01234567) TestEnumUnnamedDef::Dft(42, 0x01234567)
); );

View file

@ -25,6 +25,7 @@ impl<'a> DexFileReader<'a> {
pub fn new(data: &'a [u8]) -> Result<Self> { pub fn new(data: &'a [u8]) -> Result<Self> {
let mut buffer = Cursor::new(data); let mut buffer = Cursor::new(data);
let header = HeaderItem::deserialize(&mut buffer)?; let header = HeaderItem::deserialize(&mut buffer)?;
println!("{header:x?}");
let mut tmp_file = Self { let mut tmp_file = Self {
data, data,
header, header,

View file

@ -81,15 +81,15 @@ use syn::{
/// Example::Zero /// Example::Zero
/// ); /// );
/// assert_eq!( /// assert_eq!(
/// Example::deserialize_from_slice(&[1u8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), /// Example::deserialize_from_slice(&[1u8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(),
/// Example::One(0x01234567) /// Example::One(0x01234567)
/// ); /// );
/// assert_eq!( /// assert_eq!(
/// Example::deserialize_from_slice(&[2u8, 0xFEu8, 0xDCu8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), /// Example::deserialize_from_slice(&[2u8, 0xDCu8, 0xFEu8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(),
/// Example::Two { a: 0xFEDC, b: 0x01234567 } /// Example::Two { a: 0xFEDC, b: 0x01234567 }
/// ); /// );
/// assert_eq!( /// assert_eq!(
/// Example::deserialize_from_slice(&[42u8, 0x01u8, 0x23u8, 0x45, 0x67]).unwrap(), /// Example::deserialize_from_slice(&[42u8, 0x67, 0x45, 0x23u8, 0x01u8]).unwrap(),
/// Example::Dft(42, 0x01234567) /// Example::Dft(42, 0x01234567)
/// ); /// );
/// ``` /// ```
@ -110,7 +110,7 @@ use syn::{
/// } /// }
/// ///
/// assert_eq!( /// assert_eq!(
/// Example::deserialize_from_slice(&[0x42, 0, 1, 2, 3, 0x66, 0x66]).unwrap(), /// Example::deserialize_from_slice(&[0x42, 3, 2, 1, 0, 0x66, 0x66]).unwrap(),
/// Example { a: 0x00010203 } /// Example { a: 0x00010203 }
/// ); /// );
/// ``` /// ```