Skip to content

Commit b2b0f61

Browse files
authored
Merge pull request #113 from namada-net/tiago/serde-json-fixes
Serde json fixes
2 parents 5f9967b + ceea784 commit b2b0f61

4 files changed

Lines changed: 33 additions & 13 deletions

File tree

Cargo.lock

Lines changed: 13 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ members = [
88

99

1010
[workspace.package]
11-
version = "3.0.10"
11+
version = "3.0.11"
1212

1313
[profile.release]
1414
lto = true

masp_primitives/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ criterion = "0.5"
8989
proptest = "1.0.0"
9090
assert_matches = "1.3.0"
9191
rand_xorshift = "0.3"
92+
serde_json = "1.0.149"
9293

9394
[features]
9495
serde = ["dep:serde", "dep:serde-hex"]

masp_primitives/src/sapling.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ pub fn merkle_hash(depth: usize, lhs: &[u8; 32], rhs: &[u8; 32]) -> [u8; 32] {
9292
#[derive(Clone, Copy, Debug, PartialEq, Eq, BorshSerialize, BorshDeserialize, Default)]
9393
#[cfg_attr(feature = "arbitrary", derive(arbitrary::Arbitrary))]
9494
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
95+
#[cfg_attr(feature = "serde", serde(transparent))]
9596
#[repr(transparent)]
9697
pub struct Node {
9798
#[cfg_attr(feature = "serde", serde(with = "SerHex::<Strict>"))]
@@ -1033,14 +1034,31 @@ pub mod testing {
10331034

10341035
#[cfg(test)]
10351036
mod tests {
1037+
use super::Node;
10361038
use crate::{
10371039
sapling::Note,
10381040
sapling::testing::{arb_note, arb_positive_note_value},
10391041
transaction::components::amount::MAX_MONEY,
10401042
};
10411043
use borsh::BorshDeserialize;
1044+
use incrementalmerkletree::Hashable;
10421045
use proptest::prelude::*;
10431046

1047+
#[test]
1048+
#[cfg(feature = "serde")]
1049+
fn test_serde_node_roundtrip() {
1050+
let empty = Node::empty_leaf();
1051+
1052+
let ser = serde_json::to_string(&empty).unwrap();
1053+
assert_eq!(
1054+
ser,
1055+
r#""0100000000000000000000000000000000000000000000000000000000000000""#
1056+
);
1057+
1058+
let de: Node = serde_json::from_str(&ser).unwrap();
1059+
assert_eq!(empty, de);
1060+
}
1061+
10441062
proptest! {
10451063
#![proptest_config(ProptestConfig::with_cases(10))]
10461064
#[test]

0 commit comments

Comments
 (0)