@@ -195,3 +195,58 @@ impl Id {
195195/// Untyped JSON-RPC ID.
196196// TODO(niklasad1): this should be enforced to only accept: String, Number, or Null.
197197pub type JsonRpcRawId < ' a > = Option < & ' a serde_json:: value:: RawValue > ;
198+
199+ #[ cfg( test) ]
200+ mod tests {
201+ use super :: * ;
202+
203+ #[ test]
204+ fn two_point_zero_serde_works ( ) {
205+ let initial_ser = r#""2.0""# ;
206+ // The fact that it was deserialized is enough.
207+ let two_point_zero: TwoPointZero = serde_json:: from_str ( initial_ser) . unwrap ( ) ;
208+ let serialized = serde_json:: to_string ( & two_point_zero) . unwrap ( ) ;
209+ assert_eq ! ( serialized, initial_ser) ;
210+ }
211+
212+ #[ test]
213+ fn id_serde_works ( ) {
214+ let test_vector = & [ ( "42" , Id :: Number ( 42 ) ) , ( r#""one""# , Id :: Str ( "one" . into ( ) ) ) , ( "null" , Id :: Null ) ] ;
215+
216+ for ( initial_ser, expected) in test_vector {
217+ let id: Id = serde_json:: from_str ( initial_ser) . unwrap ( ) ;
218+ assert_eq ! ( & id, expected) ;
219+ let serialized = serde_json:: to_string ( & id) . unwrap ( ) ;
220+ assert_eq ! ( & serialized, initial_ser) ;
221+ }
222+ }
223+
224+ #[ test]
225+ fn subscription_id_serde_works ( ) {
226+ let test_vector = & [ ( "42" , SubscriptionId :: Num ( 42 ) ) , ( r#""one""# , SubscriptionId :: Str ( "one" . into ( ) ) ) ] ;
227+
228+ for ( initial_ser, expected) in test_vector {
229+ let id: SubscriptionId = serde_json:: from_str ( initial_ser) . unwrap ( ) ;
230+ assert_eq ! ( & id, expected) ;
231+ let serialized = serde_json:: to_string ( & id) . unwrap ( ) ;
232+ assert_eq ! ( & serialized, initial_ser) ;
233+ }
234+ }
235+
236+ #[ test]
237+ fn params_serialize_works ( ) {
238+ let test_vector = & [
239+ ( "null" , JsonRpcParams :: NoParams ) ,
240+ ( "[42,23]" , JsonRpcParams :: Array ( serde_json:: from_str ( "[42,23]" ) . unwrap ( ) ) ) ,
241+ (
242+ r#"{"a":42,"b":null,"c":"aa"}"# ,
243+ JsonRpcParams :: Map ( serde_json:: from_str ( r#"{"a":42,"b":null,"c":"aa"}"# ) . unwrap ( ) ) ,
244+ ) ,
245+ ] ;
246+
247+ for ( initial_ser, params) in test_vector {
248+ let serialized = serde_json:: to_string ( params) . unwrap ( ) ;
249+ assert_eq ! ( & serialized, initial_ser) ;
250+ }
251+ }
252+ }
0 commit comments