11using Staple ;
22using Staple . Internal ;
3+ using System . Text . Json ;
34
45namespace CoreTests
56{
@@ -160,7 +161,7 @@ public void TestSerialize()
160161 Assert . That ( result . parameters [ nameof ( SimpleAsset . stringValue ) ] . value , Is . EqualTo ( asset . stringValue ) ) ;
161162 Assert . That ( result . parameters [ nameof ( SimpleAsset . numbers ) ] . value , Is . EqualTo ( asset . numbers ) ) ;
162163 Assert . That ( result . parameters [ nameof ( SimpleAsset . pathAsset ) ] . value , Is . EqualTo ( asset . pathAsset . Guid ) ) ;
163- Assert . That ( result . parameters [ nameof ( SimpleAsset . enumValue ) ] . value , Is . EqualTo ( asset . enumValue ) ) ;
164+ Assert . That ( result . parameters [ nameof ( SimpleAsset . enumValue ) ] . value , Is . EqualTo ( asset . enumValue . ToString ( ) ) ) ;
164165 } ) ;
165166
166167 asset . pathAsset = ( SimplePathAsset ) SimplePathAsset . Create ( "/abc/Cache/Staging/Windows/valid path" ) ;
@@ -243,7 +244,7 @@ public void TestSerializeSerializable()
243244 if ( parameter . value is SerializableStapleAssetContainer container )
244245 {
245246 Assert . That ( container . typeName , Is . EqualTo ( typeof ( SerializableAsset . InnerClass ) . FullName ) ) ;
246- Assert . That ( container . parameters , Has . Count . EqualTo ( 0 ) ) ;
247+ Assert . That ( container . fields , Has . Count . EqualTo ( 0 ) ) ;
247248 }
248249 }
249250 } ) ;
@@ -265,21 +266,21 @@ public void TestSerializeSerializable()
265266 if ( parameter . value is SerializableStapleAssetContainer container )
266267 {
267268 Assert . That ( container . typeName , Is . EqualTo ( typeof ( SerializableAsset . InnerClass ) . FullName ) ) ;
268- Assert . That ( container . parameters , Has . Count . EqualTo ( 1 ) ) ;
269+ Assert . That ( container . fields , Has . Count . EqualTo ( 1 ) ) ;
269270
270- Assert . That ( container . parameters . ContainsKey ( nameof ( SerializableAsset . InnerClass . container ) ) , Is . True ) ;
271+ Assert . That ( container . fields . ContainsKey ( nameof ( SerializableAsset . InnerClass . container ) ) , Is . True ) ;
271272
272- Assert . That ( container . parameters [ nameof ( SerializableAsset . InnerClass . container ) ] . value , Is . TypeOf < SerializableStapleAssetContainer > ( ) ) ;
273+ Assert . That ( container . fields [ nameof ( SerializableAsset . InnerClass . container ) ] . value , Is . TypeOf < SerializableStapleAssetContainer > ( ) ) ;
273274
274- if ( container . parameters [ nameof ( SerializableAsset . InnerClass . container ) ] . value is SerializableStapleAssetContainer innerContainer )
275+ if ( container . fields [ nameof ( SerializableAsset . InnerClass . container ) ] . value is SerializableStapleAssetContainer innerContainer )
275276 {
276277 Assert . That ( innerContainer . typeName , Is . EqualTo ( typeof ( SerializableAsset . InnerClass . InnerInnerClass ) . FullName ) ) ;
277278
278- Assert . That ( innerContainer . parameters . Count , Is . EqualTo ( 1 ) ) ;
279+ Assert . That ( innerContainer . fields . Count , Is . EqualTo ( 1 ) ) ;
279280
280- Assert . That ( innerContainer . parameters . ContainsKey ( nameof ( SerializableAsset . InnerClass . InnerInnerClass . value ) ) ) ;
281+ Assert . That ( innerContainer . fields . ContainsKey ( nameof ( SerializableAsset . InnerClass . InnerInnerClass . value ) ) ) ;
281282
282- if ( innerContainer . parameters . TryGetValue ( nameof ( SerializableAsset . InnerClass . InnerInnerClass ) , out var innerParameter ) )
283+ if ( innerContainer . fields . TryGetValue ( nameof ( SerializableAsset . InnerClass . InnerInnerClass ) , out var innerParameter ) )
283284 {
284285 Assert . That ( innerParameter . typeName , Is . EqualTo ( typeof ( int ) . FullName ) ) ;
285286
@@ -470,5 +471,48 @@ public void TestSerializeField()
470471 Assert . That ( newAsset . GetSerializedField ( ) , Is . EqualTo ( 2 ) ) ;
471472 }
472473 }
474+
475+ [ Test ]
476+ public void TestDeserializeJson ( )
477+ {
478+ StapleCodeGeneration . TypeCacheRegistration . RegisterAll ( ) ;
479+
480+ var asset = new SimpleAsset
481+ {
482+ intValue = 2 ,
483+ stringValue = "different" ,
484+ enumValue = NewEnum . B ,
485+ } ;
486+
487+ asset . numbers . Clear ( ) ;
488+ asset . numbers . Add ( 123 ) ;
489+
490+ asset . pathAsset = ( SimplePathAsset ) SimplePathAsset . Create ( "/abc/Cache/Staging/Windows/valid path" ) ;
491+
492+ var result = StapleSerializer . SerializeContainer ( asset , true ) ;
493+
494+ Assert . That ( result , Is . Not . EqualTo ( null ) ) ;
495+
496+ var jsonText = JsonSerializer . Serialize ( result , StapleSerializerContainerSerializationContext . Default . StapleSerializerContainer ) ;
497+
498+ var deserialized = JsonSerializer . Deserialize ( jsonText , StapleSerializerContainerSerializationContext . Default . StapleSerializerContainer ) ;
499+
500+ var newResult = StapleSerializer . DeserializeContainer ( deserialized ) ;
501+
502+ Assert . That ( newResult , Is . Not . EqualTo ( null ) ) ;
503+
504+ Assert . That ( newResult , Is . TypeOf < SimpleAsset > ( ) ) ;
505+
506+ var newAsset = newResult as SimpleAsset ;
507+
508+ Assert . That ( newAsset , Is . Not . EqualTo ( null ) ) ;
509+
510+ Assert . That ( newAsset . intValue , Is . EqualTo ( asset . intValue ) ) ;
511+ Assert . That ( newAsset . stringValue , Is . EqualTo ( asset . stringValue ) ) ;
512+ Assert . That ( newAsset . numbers , Is . EqualTo ( asset . numbers ) ) ;
513+ Assert . That ( newAsset . pathAsset != null ) ;
514+ Assert . That ( newAsset . pathAsset . Guid , Is . EqualTo ( "valid path" ) ) ;
515+ Assert . That ( newAsset . enumValue , Is . EqualTo ( asset . enumValue ) ) ;
516+ }
473517 }
474518}
0 commit comments