field_of.rs 1.4 KB

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