serde.rs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. use ibig::{ibig, ubig};
  2. use serde_test::{assert_de_tokens, assert_tokens, Token};
  3. #[test]
  4. fn test_ubig_serde() {
  5. assert_tokens(&ubig!(0), &[Token::Seq { len: Some(0) }, Token::SeqEnd]);
  6. assert_de_tokens(&ubig!(0), &[Token::Seq { len: None }, Token::SeqEnd]);
  7. assert_tokens(
  8. &ubig!(17),
  9. &[Token::Seq { len: Some(1) }, Token::U64(17), Token::SeqEnd],
  10. );
  11. assert_de_tokens(
  12. &ubig!(17),
  13. &[Token::Seq { len: None }, Token::U8(17), Token::SeqEnd],
  14. );
  15. assert_tokens(
  16. &ubig!(0x123451234567890abcdef),
  17. &[
  18. Token::Seq { len: Some(2) },
  19. Token::U64(0x1234567890abcdef),
  20. Token::U64(0x12345),
  21. Token::SeqEnd,
  22. ],
  23. );
  24. assert_de_tokens(
  25. &ubig!(0x123451234567890abcdef),
  26. &[
  27. Token::Seq { len: None },
  28. Token::U64(0x1234567890abcdef),
  29. Token::U64(0x12345),
  30. Token::SeqEnd,
  31. ],
  32. );
  33. }
  34. #[test]
  35. fn test_ibig_serde() {
  36. assert_tokens(
  37. &ibig!(0),
  38. &[
  39. Token::Tuple { len: 2 },
  40. Token::UnitVariant {
  41. name: "Sign",
  42. variant: "Positive",
  43. },
  44. Token::Seq { len: Some(0) },
  45. Token::SeqEnd,
  46. Token::TupleEnd,
  47. ],
  48. );
  49. assert_de_tokens(
  50. &ibig!(0),
  51. &[
  52. Token::Seq { len: None },
  53. Token::UnitVariant {
  54. name: "Sign",
  55. variant: "Negative",
  56. },
  57. Token::Seq { len: None },
  58. Token::SeqEnd,
  59. Token::SeqEnd,
  60. ],
  61. );
  62. assert_tokens(
  63. &ibig!(17),
  64. &[
  65. Token::Tuple { len: 2 },
  66. Token::UnitVariant {
  67. name: "Sign",
  68. variant: "Positive",
  69. },
  70. Token::Seq { len: Some(1) },
  71. Token::U64(17),
  72. Token::SeqEnd,
  73. Token::TupleEnd,
  74. ],
  75. );
  76. assert_tokens(
  77. &ibig!(-17),
  78. &[
  79. Token::Tuple { len: 2 },
  80. Token::UnitVariant {
  81. name: "Sign",
  82. variant: "Negative",
  83. },
  84. Token::Seq { len: Some(1) },
  85. Token::U64(17),
  86. Token::SeqEnd,
  87. Token::TupleEnd,
  88. ],
  89. );
  90. }