Fixes for serialization

This commit is contained in:
2024-09-03 09:48:18 +02:00
parent 3214a6f29a
commit 656c208e5f
4 changed files with 198 additions and 14 deletions

View File

@@ -1,3 +1,4 @@
using System.Text.Json;
using PkmnLib.Dynamic.Models;
using PkmnLib.Dynamic.Models.Serialized;
using PkmnLib.Static;
@@ -65,8 +66,8 @@ public class SerializationTests
HeldItem = null,
CurrentHealth = 29,
Happiness = 70,
IndividualValues = new IndividualValueStatisticSet(20, 20, 20, 20, 20, 20),
EffortValues = new EffortValueStatisticSet(0, 0, 0, 0, 0, 0),
IndividualValues = new SerializedStats(20, 20, 20, 20, 20, 20),
EffortValues = new SerializedStats(0, 0, 0, 0, 0, 0),
Nature = "hardy",
Nickname = "foo",
Moves = new[]
@@ -112,4 +113,70 @@ public class SerializationTests
});
}
[Test]
public void SerializedPokemonToJson()
{
var data = new SerializedPokemon
{
Species = "bulbasaur",
Form = "default",
Ability = "overgrow",
Level = 10,
Experience = 560,
PersonalityValue = 1000,
Gender = Gender.Male,
Coloring = 0,
HeldItem = null,
CurrentHealth = 29,
Happiness = 70,
IndividualValues = new SerializedStats(20, 20, 20, 20, 20, 20),
EffortValues = new SerializedStats(0, 0, 0, 0, 0, 0),
Nature = "hardy",
Nickname = "foo",
Moves = new[]
{
new SerializedLearnedMove
{
MoveName = "tackle",
LearnMethod = MoveLearnMethod.LevelUp,
CurrentPp = 23,
},
null,
null,
null,
},
};
var json = JsonSerializer.Serialize(data);
var deserialized = JsonSerializer.Deserialize<SerializedPokemon>(json);
Assert.That(deserialized, Is.Not.Null);
Assert.Multiple(() =>
{
Assert.That(deserialized!.Species, Is.EqualTo("bulbasaur"));
Assert.That(deserialized!.Form, Is.EqualTo("default"));
Assert.That(deserialized!.Ability, Is.EqualTo("overgrow"));
Assert.That(deserialized!.Level, Is.EqualTo(10));
Assert.That(deserialized!.Experience, Is.EqualTo(560));
Assert.That(deserialized!.PersonalityValue, Is.EqualTo(1000));
Assert.That(deserialized!.Gender, Is.EqualTo(Gender.Male));
Assert.That(deserialized!.Coloring, Is.EqualTo(0));
Assert.That(deserialized!.HeldItem, Is.Null);
Assert.That(deserialized!.CurrentHealth, Is.EqualTo(29));
Assert.That(deserialized!.Happiness, Is.EqualTo(70));
Assert.That(deserialized!.IndividualValues, Is.EqualTo(new SerializedStats(20, 20, 20, 20, 20, 20)));
Assert.That(deserialized!.EffortValues, Is.EqualTo(new SerializedStats(0, 0, 0, 0, 0, 0)));
Assert.That(deserialized!.Nature, Is.EqualTo("hardy"));
Assert.That(deserialized!.Nickname, Is.EqualTo("foo"));
});
Assert.That(deserialized!.Moves, Has.Length.EqualTo(4));
Assert.That(deserialized!.Moves[0], Is.Not.Null);
Assert.Multiple(() =>
{
Assert.That(deserialized!.Moves[0]!.MoveName, Is.EqualTo("tackle"));
Assert.That(deserialized!.Moves[0]!.LearnMethod, Is.EqualTo(MoveLearnMethod.LevelUp));
Assert.That(deserialized!.Moves[0]!.CurrentPp, Is.EqualTo(23));
});
}
}