File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,7 +13,12 @@ impl<T: LowerHex> Serialize for Hex<T> {
1313 fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
1414 where S : Serializer
1515 {
16- serializer. serialize_str ( & format ! ( "0x{:x}" , self . 0 ) )
16+ let value = format ! ( "0x{:x}" , self . 0 ) ;
17+ if & value == "0x" {
18+ serializer. serialize_str ( "0x0" )
19+ } else {
20+ serializer. serialize_str ( & value)
21+ }
1722 }
1823}
1924
@@ -82,3 +87,25 @@ impl<'de> Deserialize<'de> for Bytes {
8287 deserializer. deserialize_str ( BytesVisitor )
8388 }
8489}
90+
91+ #[ cfg( test) ]
92+ mod tests {
93+ use super :: * ;
94+ use bigint:: * ;
95+ use serde_json;
96+
97+ #[ test]
98+ fn hex_single_digit ( ) {
99+ assert_eq ! ( "\" 0x1\" " , serde_json:: to_string( & Hex ( U256 :: one( ) ) ) . unwrap( ) ) ;
100+ }
101+
102+ #[ test]
103+ fn hex_zero ( ) {
104+ assert_eq ! ( "\" 0x0\" " , serde_json:: to_string( & Hex ( U256 :: zero( ) ) ) . unwrap( ) ) ;
105+ }
106+
107+ #[ test]
108+ fn bytes_single_digit ( ) {
109+ assert_eq ! ( "\" 0x01\" " , serde_json:: to_string( & Bytes ( vec![ 1 ] ) ) . unwrap( ) ) ;
110+ }
111+ }
You can’t perform that action at this time.
0 commit comments