11using System ;
22using System . Collections . Generic ;
3+ using System . Collections . Specialized ;
34using System . Diagnostics ;
45using NUnit . Framework ;
56using ServiceStack . Text . Tests . DynamicModels . DataModel ;
@@ -500,6 +501,60 @@ public void Nongeneric_implementors_of_IDictionary_K_V_Should_serialize_like_Dic
500501 IDictionary < string , object > dict = expando ;
501502 Assert . AreEqual ( dict . Dump ( ) , new Dictionary < string , object > ( dict ) . Dump ( ) ) ;
502503 }
504+
505+ [ Test ]
506+ public void Can_serialize_OrderedDictionary ( )
507+ {
508+ var dto = new OrderedDictionary { { "A" , 1 } , { "B" , "2" } , { "C" , true } } ;
509+ var to = Serialize ( dto , includeXml : false ) ;
510+
511+ Assert . That ( to [ "A" ] , Is . EqualTo ( 1 ) ) ;
512+ Assert . That ( to [ "B" ] , Is . EqualTo ( "2" ) ) ;
513+ Assert . That ( to [ "C" ] , Is . EqualTo ( true ) ) ;
514+ }
515+
516+ [ Test ]
517+ public void Can_deserialize_ordereddictionary ( )
518+ {
519+ var original = new OrderedDictionary {
520+ { "Key1" , "Value1" } ,
521+ { "Key2" , 2 } ,
522+ { 3 , "Value3" } ,
523+ { "Key4" , false }
524+ } ;
525+ var json = JsonSerializer . SerializeToString ( original ) ;
526+ var deserialized = JsonSerializer . DeserializeFromString < OrderedDictionary > ( json ) ;
527+
528+ json . Print ( ) ;
529+
530+ Assert . That ( deserialized , Is . Not . Null ) ;
531+ Assert . That ( deserialized [ "Key1" ] , Is . EqualTo ( "Value1" ) ) ;
532+ Assert . That ( deserialized [ "Key2" ] , Is . EqualTo ( 2 ) ) ;
533+ Assert . That ( deserialized [ 2 ] , Is . EqualTo ( "Value3" ) ) ;
534+ Assert . That ( deserialized [ "Key4" ] , Is . EqualTo ( false ) ) ;
535+ }
536+
537+ [ Test ]
538+ public void Can_deserialize_ordereddictionary_subclass ( )
539+ {
540+ var original = new OrderedDictionarySub {
541+ { "Key1" , "Value1" } ,
542+ { "Key2" , 2 } ,
543+ { 3 , "Value3" } ,
544+ { "Key4" , false }
545+ } ;
546+ var json = JsonSerializer . SerializeToString ( original ) ;
547+ var deserialized = JsonSerializer . DeserializeFromString < OrderedDictionarySub > ( json ) ;
548+
549+ json . Print ( ) ;
550+
551+ Assert . That ( deserialized , Is . Not . Null ) ;
552+ Assert . That ( deserialized [ "Key1" ] , Is . EqualTo ( "Value1" ) ) ;
553+ Assert . That ( deserialized [ "Key2" ] , Is . EqualTo ( 2 ) ) ;
554+ Assert . That ( deserialized [ 2 ] , Is . EqualTo ( "Value3" ) ) ;
555+ Assert . That ( deserialized [ "Key4" ] , Is . EqualTo ( false ) ) ;
556+ }
503557 }
504558
559+ public class OrderedDictionarySub : OrderedDictionary { }
505560}
0 commit comments