103 lines
4.8 KiB
C#
103 lines
4.8 KiB
C#
using GeometryTD.Definition;
|
|
using GeometryTD.Factory;
|
|
using Newtonsoft.Json.Linq;
|
|
using NUnit.Framework;
|
|
|
|
namespace GeometryTD.Tests.EditMode
|
|
{
|
|
public sealed class EventDefinitionFactoryTests
|
|
{
|
|
[Test]
|
|
public void RequirementFactory_Creates_GoldAtLeast_From_Count_Or_Gold_Field()
|
|
{
|
|
EventRequirementBase countRequirement = EventRequirementFactory.Create(
|
|
"GoldAtLeast",
|
|
JObject.Parse(@"{ ""Count"": 35 }"));
|
|
EventRequirementBase goldRequirement = EventRequirementFactory.Create(
|
|
"GoldAtLeast",
|
|
JObject.Parse(@"{ ""Gold"": 21 }"));
|
|
|
|
Assert.That(countRequirement, Is.TypeOf<GoldAtLeastRequirement>());
|
|
Assert.That(((GoldAtLeastParam)countRequirement.Param).Gold, Is.EqualTo(35));
|
|
Assert.That(goldRequirement, Is.TypeOf<GoldAtLeastRequirement>());
|
|
Assert.That(((GoldAtLeastParam)goldRequirement.Param).Gold, Is.EqualTo(21));
|
|
}
|
|
|
|
[Test]
|
|
public void RequirementFactory_Creates_Component_And_Relic_Requirements_With_Expected_Params()
|
|
{
|
|
EventRequirementBase compRequirement = EventRequirementFactory.Create(
|
|
"CompCountAtLeast",
|
|
JObject.Parse(@"{ ""Count"": 2, ""Rarity"": ""Blue"" }"));
|
|
EventRequirementBase relicRequirement = EventRequirementFactory.Create(
|
|
"HasRelic",
|
|
JObject.Parse(@"{ ""Id"": 9001 }"));
|
|
|
|
Assert.That(compRequirement, Is.TypeOf<CompCountAtLeastRequirement>());
|
|
CompCountAtLeastParam compParam = (CompCountAtLeastParam)compRequirement.Param;
|
|
Assert.That(compParam.Count, Is.EqualTo(2));
|
|
Assert.That(compParam.Rarity, Is.EqualTo(RarityType.Blue));
|
|
|
|
Assert.That(relicRequirement, Is.TypeOf<HasRelicRequirement>());
|
|
Assert.That(((HasRelicParam)relicRequirement.Param).RelicId, Is.EqualTo(9001));
|
|
}
|
|
|
|
[Test]
|
|
public void EffectFactory_Creates_AddGold_And_Component_Effects_With_Probability()
|
|
{
|
|
EventEffectBase addGoldEffect = EventEffectFactory.Create(
|
|
"AddGold",
|
|
JObject.Parse(@"{ ""Count"": 80 }"),
|
|
0.75f);
|
|
EventEffectBase addRandomCompEffect = EventEffectFactory.Create(
|
|
"AddRandomComps",
|
|
JObject.Parse(@"{ ""Count"": 1, ""Rarity"": ""Purple"" }"),
|
|
0.5f);
|
|
EventEffectBase removeRandomCompEffect = EventEffectFactory.Create(
|
|
"RemoveRandomComps",
|
|
JObject.Parse(@"{ ""Count"": 2, ""Rarity"": ""Blue"" }"),
|
|
0.25f);
|
|
|
|
Assert.That(addGoldEffect, Is.TypeOf<AddGoldEffect>());
|
|
Assert.That(((AddGoldParam)addGoldEffect.Param).Count, Is.EqualTo(80));
|
|
Assert.That(addGoldEffect.Probability, Is.EqualTo(0.75f));
|
|
|
|
Assert.That(addRandomCompEffect, Is.TypeOf<AddRandomCompsEffect>());
|
|
AddRandomCompsParam addParam = (AddRandomCompsParam)addRandomCompEffect.Param;
|
|
Assert.That(addParam.Count, Is.EqualTo(1));
|
|
Assert.That(addParam.Rarity, Is.EqualTo(RarityType.Purple));
|
|
Assert.That(addRandomCompEffect.Probability, Is.EqualTo(0.5f));
|
|
|
|
Assert.That(removeRandomCompEffect, Is.TypeOf<RemoveRandomCompsEffect>());
|
|
RemoveRandomCompsParam removeParam = (RemoveRandomCompsParam)removeRandomCompEffect.Param;
|
|
Assert.That(removeParam.Count, Is.EqualTo(2));
|
|
Assert.That(removeParam.Rarity, Is.EqualTo(RarityType.Blue));
|
|
Assert.That(removeRandomCompEffect.Probability, Is.EqualTo(0.25f));
|
|
}
|
|
|
|
[Test]
|
|
public void EffectFactory_Creates_DamageRandomTowerEnduranceEffect_With_Expected_Params()
|
|
{
|
|
EventEffectBase effect = EventEffectFactory.Create(
|
|
"DamageRandomTowersEndurance",
|
|
JObject.Parse(@"{ ""Count"": 3, ""Amount"": 15 }"),
|
|
0.4f);
|
|
|
|
Assert.That(effect, Is.TypeOf<DamageRandomTowerEnduranceEffect>());
|
|
DamageRandomTowerEnduranceParam param = (DamageRandomTowerEnduranceParam)effect.Param;
|
|
Assert.That(param.Count, Is.EqualTo(3));
|
|
Assert.That(param.Amount, Is.EqualTo(15));
|
|
Assert.That(effect.Probability, Is.EqualTo(0.4f));
|
|
}
|
|
|
|
[Test]
|
|
public void Factories_Return_Null_For_Unsupported_Or_Empty_Type()
|
|
{
|
|
Assert.That(EventRequirementFactory.Create(string.Empty, JObject.Parse("{}")), Is.Null);
|
|
Assert.That(EventRequirementFactory.Create("UnknownRequirement", JObject.Parse("{}")), Is.Null);
|
|
Assert.That(EventEffectFactory.Create(string.Empty, JObject.Parse("{}")), Is.Null);
|
|
Assert.That(EventEffectFactory.Create("UnknownEffect", JObject.Parse("{}")), Is.Null);
|
|
}
|
|
}
|
|
}
|