mirror of
https://github.com/danieleteti/delphimvcframework.git
synced 2024-11-15 15:55:54 +01:00
Added support for deserializing generic lists without MVCListOf attribute.
This commit is contained in:
parent
2830a7e27f
commit
cbbf2956f4
@ -110,6 +110,8 @@ type
|
||||
|
||||
[Test]
|
||||
procedure TestSerializeDeserializeGenericEntity;
|
||||
[Test]
|
||||
procedure TestSerializeDeserializeMultipleGenericEntity;
|
||||
end;
|
||||
|
||||
TMVCEntityCustomSerializerJsonDataObjects = class(TInterfacedObject, IMVCTypeSerializer)
|
||||
@ -1410,6 +1412,83 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMVCTestSerializerJsonDataObjects.TestSerializeDeserializeMultipleGenericEntity;
|
||||
const
|
||||
JSON =
|
||||
'{' +
|
||||
'"Code":1,' +
|
||||
'"Description":"General Description",' +
|
||||
'"Items":[' +
|
||||
'{"Description":"Description 01"},' +
|
||||
'{"Description":"Description 02"},' +
|
||||
'{"Description":"Description 03"},' +
|
||||
'{"Description":"Description 04"},' +
|
||||
'{"Description":"Description 05"}' +
|
||||
'],'+
|
||||
'"Items2":[' +
|
||||
'{"Description":"Description2 01"},' +
|
||||
'{"Description":"Description2 02"},' +
|
||||
'{"Description":"Description2 03"},' +
|
||||
'{"Description":"Description2 04"},' +
|
||||
'{"Description":"Description2 05"}' +
|
||||
']'+
|
||||
'}';
|
||||
var
|
||||
LGenericEntity: TMultipleGenericEntity<TNote, TNote>;
|
||||
LJson: string;
|
||||
begin
|
||||
LGenericEntity := TMultipleGenericEntity<TNote, TNote>.Create;
|
||||
try
|
||||
LGenericEntity.Code := 1;
|
||||
LGenericEntity.Description := 'General Description';
|
||||
|
||||
LGenericEntity.Items.Add(TNote.Create('Description 01'));
|
||||
LGenericEntity.Items.Add(TNote.Create('Description 02'));
|
||||
LGenericEntity.Items.Add(TNote.Create('Description 03'));
|
||||
LGenericEntity.Items.Add(TNote.Create('Description 04'));
|
||||
LGenericEntity.Items.Add(TNote.Create('Description 05'));
|
||||
|
||||
LGenericEntity.Items2.Add(TNote.Create('Description2 01'));
|
||||
LGenericEntity.Items2.Add(TNote.Create('Description2 02'));
|
||||
LGenericEntity.Items2.Add(TNote.Create('Description2 03'));
|
||||
LGenericEntity.Items2.Add(TNote.Create('Description2 04'));
|
||||
LGenericEntity.Items2.Add(TNote.Create('Description2 05'));
|
||||
|
||||
|
||||
LJson := FSerializer.SerializeObject(LGenericEntity);
|
||||
|
||||
Assert.AreEqual(JSON, LJson);
|
||||
finally
|
||||
LGenericEntity.Free;
|
||||
end;
|
||||
|
||||
LGenericEntity := TMultipleGenericEntity<TNote, TNote>.Create;
|
||||
try
|
||||
FSerializer.DeserializeObject(LJson, LGenericEntity);
|
||||
|
||||
Assert.AreEqual(Integer(1), LGenericEntity.Code);
|
||||
Assert.AreEqual('General Description', LGenericEntity.Description);
|
||||
|
||||
Assert.AreEqual(Integer(5), LGenericEntity.Items.Count);
|
||||
Assert.AreEqual('Description 01', LGenericEntity.Items[0].Description);
|
||||
Assert.AreEqual('Description 02', LGenericEntity.Items[1].Description);
|
||||
Assert.AreEqual('Description 03', LGenericEntity.Items[2].Description);
|
||||
Assert.AreEqual('Description 04', LGenericEntity.Items[3].Description);
|
||||
Assert.AreEqual('Description 05', LGenericEntity.Items[4].Description);
|
||||
|
||||
Assert.AreEqual(Integer(5), LGenericEntity.Items2.Count);
|
||||
Assert.AreEqual('Description2 01', LGenericEntity.Items2[0].Description);
|
||||
Assert.AreEqual('Description2 02', LGenericEntity.Items2[1].Description);
|
||||
Assert.AreEqual('Description2 03', LGenericEntity.Items2[2].Description);
|
||||
Assert.AreEqual('Description2 04', LGenericEntity.Items2[3].Description);
|
||||
Assert.AreEqual('Description2 05', LGenericEntity.Items2[4].Description);
|
||||
|
||||
finally
|
||||
LGenericEntity.Free;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
procedure TMVCTestSerializerJsonDataObjects.TestSerializeNil;
|
||||
begin
|
||||
Assert.areEqual('null', FSerializer.SerializeObject(nil));
|
||||
|
Loading…
Reference in New Issue
Block a user