From f6197068ef765260e45826173a3806a45d669936 Mon Sep 17 00:00:00 2001 From: Malachy Byrne Date: Sat, 15 Jun 2024 23:18:19 +0100 Subject: [PATCH] Add damage class and tests --- pflib-net.Tests/damage/DamageTest.cs | 38 ++++++++++++++++++++++++++++ pflib-net/damage/Damage.cs | 28 ++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 pflib-net.Tests/damage/DamageTest.cs create mode 100644 pflib-net/damage/Damage.cs diff --git a/pflib-net.Tests/damage/DamageTest.cs b/pflib-net.Tests/damage/DamageTest.cs new file mode 100644 index 0000000..60c96ce --- /dev/null +++ b/pflib-net.Tests/damage/DamageTest.cs @@ -0,0 +1,38 @@ +using NUnit.Framework; +using pflib_net.damage; + +namespace pflib_net.Tests.damage; + +[TestFixture] +[TestOf(typeof(Damage))] +public class DamageTest +{ + + [Test] + public void GetDamageReturnsCorrectRegularAmount() + { + var damage = new Damage(10, "fire"); + Assert.That(damage.GetDamage(false), Is.EqualTo(10)); + } + + [Test] + public void GetDamageReturnsCriticalAmount() + { + var damage = new Damage(10, "fire", 30); + Assert.That(damage.GetDamage(true), Is.EqualTo(30)); + } + + [Test] + public void CriticalDamageIsDoubleRegular() + { + var damage = new Damage(10, "fire"); + Assert.That(damage.GetDamage(true), Is.EqualTo(20)); + } + + [Test] + public void GetDamageTypeReturnsCorrectType() + { + var damage = new Damage(0, "fire"); + Assert.That(damage.GetDamageType(), Is.EqualTo("fire")); + } +} \ No newline at end of file diff --git a/pflib-net/damage/Damage.cs b/pflib-net/damage/Damage.cs new file mode 100644 index 0000000..7a85049 --- /dev/null +++ b/pflib-net/damage/Damage.cs @@ -0,0 +1,28 @@ +namespace pflib_net.damage; + +public class Damage +{ + private int Regular { get; set; } + private int Critical { get; set; } + private string Type { get; set; } + + public Damage(int regular, string type, int? critical = null) + { + Regular = regular; + Type = type; + if (critical.HasValue) + Critical = critical.Value; + else + Critical = regular * 2; + } + + public int GetDamage(bool crit) + { + return crit ? Critical : Regular; + } + + public string GetDamageType() + { + return Type; + } +} \ No newline at end of file -- 2.47.2