array_of.rs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. use std::io::Cursor;
  2. use binrw::{BinRead, BinWrite};
  3. use ezcad::array_of::ArrayOf;
  4. #[test]
  5. fn array_of_be() {
  6. let encoded: Vec<u8> = vec![
  7. 0x00, 0x00, 0x00, 0x02, 0x0A, 0x0B, 0x0C, 0x0D, 0x01, 0x02, 0x03, 0x04,
  8. ];
  9. let decoded: ArrayOf<u32> = ArrayOf::from(vec![0x0A0B0C0D, 0x01020304]);
  10. let mut stream: Cursor<Vec<u8>> = Cursor::new(encoded.clone());
  11. assert_eq!(ArrayOf::<u32>::read_be(&mut stream).unwrap(), decoded);
  12. let mut buffer: Cursor<Vec<u8>> = Cursor::new(vec![]);
  13. decoded.write_be(&mut buffer).unwrap();
  14. assert_eq!(buffer.into_inner(), encoded);
  15. }
  16. #[test]
  17. fn array_of_le() {
  18. let encoded: Vec<u8> = vec![
  19. 0x02, 0x00, 0x00, 0x00, 0x0A, 0x0B, 0x0C, 0x0D, 0x01, 0x02, 0x03, 0x04,
  20. ];
  21. let decoded: ArrayOf<u32> = ArrayOf::from(vec![0x0D0C0B0A, 0x04030201]);
  22. let mut stream: Cursor<Vec<u8>> = Cursor::new(encoded.clone());
  23. assert_eq!(ArrayOf::<u32>::read_le(&mut stream).unwrap(), decoded);
  24. let mut buffer: Cursor<Vec<u8>> = Cursor::new(vec![]);
  25. decoded.write_le(&mut buffer).unwrap();
  26. assert_eq!(buffer.into_inner(), encoded);
  27. }
  28. #[test]
  29. fn array_of_struct() {
  30. #[derive(BinRead, BinWrite, Debug, PartialEq, Default)]
  31. struct Test {
  32. a: u16,
  33. b: u16,
  34. }
  35. let encoded: Vec<u8> = vec![
  36. 0x00, 0x00, 0x00, 0x02, 0x0A, 0x0B, 0x0C, 0x0D, 0x01, 0x02, 0x03, 0x04,
  37. ];
  38. let decoded: ArrayOf<Test> = ArrayOf::from(vec![
  39. Test {
  40. a: 0x0A0B,
  41. b: 0x0C0D,
  42. },
  43. Test {
  44. a: 0x0102,
  45. b: 0x0304,
  46. },
  47. ]);
  48. let mut stream: Cursor<Vec<u8>> = Cursor::new(encoded.clone());
  49. assert_eq!(ArrayOf::<Test>::read_be(&mut stream).unwrap(), decoded);
  50. let mut buffer: Cursor<Vec<u8>> = Cursor::new(vec![]);
  51. decoded.write_be(&mut buffer).unwrap();
  52. assert_eq!(buffer.into_inner(), encoded);
  53. }