-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathHammerTest.cs
117 lines (101 loc) · 3.43 KB
/
HammerTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using swlSimulator.api;
using swlSimulator.api.Combat;
using swlSimulator.api.Models;
using swlSimulator.api.Spells;
using swlSimulator.api.Weapons;
using swlSimulator.Models;
namespace swlSimulator.Tests
{
[TestClass]
public class HammerTest
{
[TestMethod]
public void TestHammerGimmick()
{
var setting = new Settings
{
PrimaryWeapon = WeaponType.Hammer,
SecondaryWeapon = WeaponType.Fist,
FightLength = 3,
TargetType = TargetType.Champion,
Apl = ""
};
var player = new Player(setting);
var hSpell = new HammerSpell();
var hSpellRage = new HammerSpellRage();
player.Spells.Add(hSpell);
player.Spells.Add(hSpellRage);
var engine = new Engine(setting);
var fight = engine.StartFight(player);
var endTime = fight.RoundResults.Last().TimeSec;
var rounds = fight.RoundResults.Count;
var spell = fight.RoundResults
.SelectMany(r => r.Attacks.Where(a => a.Spell is HammerSpell)).Count();
var spellRage = fight.RoundResults
.SelectMany(r => r.Attacks.Where(a => a.Spell is HammerSpellRage)).Count();
Assert.AreEqual(rounds, 4);
Assert.AreEqual(endTime, 3.0m);
Assert.IsTrue(spell == 2);
Assert.IsTrue(spellRage == 2);
}
[TestMethod]
public void TestHammerEnrage()
{
var setting = new Settings
{
PrimaryWeapon = WeaponType.Hammer,
SecondaryWeapon = WeaponType.Fist,
FightLength = 1,
TargetType = TargetType.Champion,
Apl = "Hammer.Smash, Buff.Enraged"
};
var player = new Player(setting);
var engine = new Engine(setting);
var fight = engine.StartFight(player);
var attacks = fight.RoundResults.Any();
Assert.IsFalse(attacks);
}
[TestMethod]
public void TestHammerEnrage2()
{
var setting = new Settings
{
PrimaryWeapon = WeaponType.Hammer,
SecondaryWeapon = WeaponType.Fist,
FightLength = 1,
TargetType = TargetType.Champion,
Apl = ""
};
var player = new Player(setting);
var hSpell = new HammerSpell();
player.Spells.Add(hSpell);
var engine = new Engine(setting);
var fight = engine.StartFight(player);
var attacks = fight.RoundResults.Any();
Assert.IsTrue(attacks);
Assert.IsTrue(player.Buff.Enraged);
}
private sealed class HammerSpell : Spell
{
public HammerSpell()
{
PrimaryGimmickGain = 50;
WeaponType = WeaponType.Hammer;
SpellType = SpellType.Cast;
BaseDamage = 1;
}
}
private sealed class HammerSpellRage: Spell
{
public HammerSpellRage()
{
PrimaryGimmickCost = 50;
WeaponType = WeaponType.Hammer;
SpellType = SpellType.Cast;
BaseDamage = 1;
}
}
}
}