Skip to content

Commit d284e06

Browse files
committed
Refactor test suite to sandbox and decouple from live content
1 parent 7d9f2c0 commit d284e06

10 files changed

Lines changed: 67 additions & 376 deletions

Mythril.Tests/AutoQuestCancellationTests.cs

Lines changed: 13 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -7,62 +7,23 @@
77
namespace Mythril.Tests;
88

99
[TestClass]
10-
public class AutoQuestCancellationTests
10+
public class AutoQuestCancellationTests : ResourceManagerTestBase
1111
{
12-
private ResourceManager? _resourceManager;
13-
private GameStore? _gameStore;
14-
private Quests? _quests;
15-
private QuestDetails? _questDetails;
16-
17-
[TestInitialize]
18-
public void Setup()
19-
{
20-
TestContentLoader.Load();
21-
22-
_gameStore = new GameStore();
23-
var items = ContentHost.GetContent<Items>();
24-
var inventory = new InventoryManager(_gameStore);
25-
var statAugments = ContentHost.GetContent<StatAugments>();
26-
var cadences = ContentHost.GetContent<Cadences>();
27-
var junctionManager = new JunctionManager(_gameStore, inventory, statAugments, cadences);
28-
29-
_quests = ContentHost.GetContent<Quests>();
30-
_questDetails = ContentHost.GetContent<QuestDetails>();
31-
var questUnlocks = ContentHost.GetContent<QuestUnlocks>();
32-
var questToCadenceUnlocks = ContentHost.GetContent<QuestToCadenceUnlocks>();
33-
var locations = ContentHost.GetContent<Locations>();
34-
var refinements = ContentHost.GetContent<ItemRefinements>();
35-
var pathfinding = new PathfindingService(locations, _quests, questUnlocks, _questDetails, cadences, questToCadenceUnlocks);
36-
37-
_resourceManager = new ResourceManager(
38-
_gameStore,
39-
items,
40-
_quests,
41-
questUnlocks,
42-
questToCadenceUnlocks,
43-
_questDetails,
44-
cadences,
45-
locations,
46-
junctionManager,
47-
inventory,
48-
refinements,
49-
pathfinding);
50-
51-
_resourceManager.Initialize();
52-
}
53-
5412
[TestMethod]
5513
public void CancelledQuest_DoesNotAutoRestart_EvenIfAutoQuestEnabled()
5614
{
5715
// Arrange
5816
var character = _resourceManager!.Characters[0];
59-
var recurringQuest = _quests!.All.First(q => _questDetails![q].Type == QuestType.Recurring);
17+
var recurringQuest = _quests!.All.First(q => q.Name == SandboxContent.BuyPotion);
6018
var questData = new QuestData(recurringQuest, _questDetails![recurringQuest]);
6119

20+
// Add Gold for requirements
21+
_resourceManager.Inventory.Add(_items!.All.First(i => i.Name == SandboxContent.Gold), 100);
22+
6223
// Enable AutoQuest (mocking the ability unlock)
63-
var recruit = ContentHost.GetContent<Cadences>().All.First(c => c.Name == "Recruit");
24+
var recruit = _cadences!.All.First(c => c.Name == SandboxContent.Recruit);
6425
_resourceManager.UnlockCadence(recruit);
65-
_resourceManager.UnlockAbility("Recruit", "AutoQuest I");
26+
_resourceManager.UnlockAbility(SandboxContent.Recruit, SandboxContent.AutoQuestI);
6627
_resourceManager.JunctionManager.AssignCadence(recruit, character, _resourceManager.UnlockedAbilities);
6728
_resourceManager.SetAutoQuestEnabled(character, true);
6829

@@ -84,13 +45,16 @@ public async Task CompletedQuest_DoesAutoRestart_WhenAutoQuestEnabled()
8445
{
8546
// Arrange
8647
var character = _resourceManager!.Characters[0];
87-
var recurringQuest = _quests!.All.First(q => _questDetails![q].Type == QuestType.Recurring);
48+
var recurringQuest = _quests!.All.First(q => q.Name == SandboxContent.BuyPotion);
8849
var questData = new QuestData(recurringQuest, _questDetails![recurringQuest]);
8950

51+
// Add Gold for requirements
52+
_resourceManager.Inventory.Add(_items!.All.First(i => i.Name == SandboxContent.Gold), 200);
53+
9054
// Enable AutoQuest
91-
var recruit = ContentHost.GetContent<Cadences>().All.First(c => c.Name == "Recruit");
55+
var recruit = _cadences!.All.First(c => c.Name == SandboxContent.Recruit);
9256
_resourceManager.UnlockCadence(recruit);
93-
_resourceManager.UnlockAbility("Recruit", "AutoQuest I");
57+
_resourceManager.UnlockAbility(SandboxContent.Recruit, SandboxContent.AutoQuestI);
9458
_resourceManager.JunctionManager.AssignCadence(recruit, character, _resourceManager.UnlockedAbilities);
9559
_resourceManager.SetAutoQuestEnabled(character, true);
9660

Mythril.Tests/BunitTestBase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void Setup()
2828
{
2929
TestContext = new Bunit.TestContext();
3030

31-
TestContentLoader.Load();
31+
SandboxContent.Load();
3232

3333
GameStore = new GameStore();
3434
InventoryManager = new InventoryManager(GameStore);

Mythril.Tests/InventoryTests.cs

Lines changed: 1 addition & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -3,51 +3,8 @@
33
namespace Mythril.Tests;
44

55
[TestClass]
6-
public class InventoryTests
6+
public class InventoryTests : ResourceManagerTestBase
77
{
8-
private ResourceManager? _resourceManager;
9-
private Items? _items;
10-
private QuestDetails? _questDetails;
11-
12-
[TestInitialize]
13-
public void Setup()
14-
{
15-
TestContentLoader.Load();
16-
_items = ContentHost.GetContent<Items>();
17-
_questDetails = ContentHost.GetContent<QuestDetails>();
18-
19-
var gameStore = new GameStore();
20-
var inventory = new InventoryManager(gameStore);
21-
var cadences = ContentHost.GetContent<Cadences>();
22-
var junctionManager = new JunctionManager(gameStore, inventory, ContentHost.GetContent<StatAugments>(), cadences);
23-
24-
var pathfinding = new PathfindingService(
25-
ContentHost.GetContent<Locations>(),
26-
ContentHost.GetContent<Quests>(),
27-
ContentHost.GetContent<QuestUnlocks>(),
28-
_questDetails,
29-
cadences,
30-
ContentHost.GetContent<QuestToCadenceUnlocks>()
31-
);
32-
33-
var quests = ContentHost.GetContent<Quests>();
34-
35-
_resourceManager = new ResourceManager(gameStore, _items, quests,
36-
ContentHost.GetContent<QuestUnlocks>(),
37-
ContentHost.GetContent<QuestToCadenceUnlocks>(),
38-
_questDetails,
39-
cadences,
40-
ContentHost.GetContent<Locations>(),
41-
junctionManager,
42-
inventory,
43-
ContentHost.GetContent<ItemRefinements>(),
44-
pathfinding);
45-
46-
_resourceManager.Initialize();
47-
48-
_resourceManager.Inventory.Clear();
49-
}
50-
518
[TestMethod]
529
public void ResourceManager_Inventory_IsAccessible()
5310
{

Mythril.Tests/JournalTests.cs

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,8 @@
33
namespace Mythril.Tests;
44

55
[TestClass]
6-
public class JournalTests
6+
public class JournalTests : ResourceManagerTestBase
77
{
8-
private ResourceManager? _resourceManager;
9-
10-
[TestInitialize]
11-
public void Setup()
12-
{
13-
TestContentLoader.Load();
14-
var gameStore = new GameStore();
15-
var inventory = new InventoryManager(gameStore);
16-
var items = ContentHost.GetContent<Items>();
17-
var quests = ContentHost.GetContent<Quests>();
18-
var questDetails = ContentHost.GetContent<QuestDetails>();
19-
var cadences = ContentHost.GetContent<Cadences>();
20-
var junctionManager = new JunctionManager(gameStore, inventory, ContentHost.GetContent<StatAugments>(), cadences);
21-
var pathfinding = new PathfindingService(ContentHost.GetContent<Locations>(), quests, ContentHost.GetContent<QuestUnlocks>(), questDetails, cadences, ContentHost.GetContent<QuestToCadenceUnlocks>());
22-
23-
_resourceManager = new ResourceManager(gameStore, items, quests,
24-
ContentHost.GetContent<QuestUnlocks>(),
25-
ContentHost.GetContent<QuestToCadenceUnlocks>(),
26-
questDetails,
27-
cadences,
28-
ContentHost.GetContent<Locations>(),
29-
junctionManager,
30-
inventory,
31-
ContentHost.GetContent<ItemRefinements>(),
32-
pathfinding);
33-
_resourceManager.Initialize();
34-
}
35-
368
[TestMethod]
379
public async Task Journal_AddEntry_Works()
3810
{

Mythril.Tests/JunctionManagementTests.cs

Lines changed: 23 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -3,60 +3,19 @@
33
namespace Mythril.Tests;
44

55
[TestClass]
6-
public class JunctionManagementTests
6+
public class JunctionManagementTests : ResourceManagerTestBase
77
{
8-
private ResourceManager? _resourceManager;
9-
private JunctionManager? _junctionManager;
10-
private Cadences? _cadences;
11-
12-
[TestInitialize]
13-
public void Setup()
14-
{
15-
TestContentLoader.Load();
16-
var items = ContentHost.GetContent<Items>();
17-
var stats = ContentHost.GetContent<Stats>();
18-
_cadences = ContentHost.GetContent<Cadences>();
19-
20-
var gameStore = new GameStore();
21-
var inventory = new InventoryManager(gameStore);
22-
_junctionManager = new JunctionManager(gameStore, inventory, ContentHost.GetContent<StatAugments>(), _cadences);
23-
24-
var pathfinding = new PathfindingService(
25-
ContentHost.GetContent<Locations>(),
26-
ContentHost.GetContent<Quests>(),
27-
ContentHost.GetContent<QuestUnlocks>(),
28-
ContentHost.GetContent<QuestDetails>(),
29-
_cadences,
30-
ContentHost.GetContent<QuestToCadenceUnlocks>()
31-
);
32-
33-
_resourceManager = new ResourceManager(
34-
gameStore,
35-
items,
36-
ContentHost.GetContent<Quests>(),
37-
ContentHost.GetContent<QuestUnlocks>(),
38-
ContentHost.GetContent<QuestToCadenceUnlocks>(),
39-
ContentHost.GetContent<QuestDetails>(),
40-
_cadences,
41-
ContentHost.GetContent<Locations>(),
42-
_junctionManager,
43-
inventory,
44-
ContentHost.GetContent<ItemRefinements>(),
45-
pathfinding);
46-
_resourceManager.Initialize();
47-
}
48-
498
[TestMethod]
509
public void JunctionManager_AssignCadence_SupportsMultipleCadences()
5110
{
5211
var character = _resourceManager!.Characters[0];
5312
var cadence1 = _cadences!.All[0];
5413
var cadence2 = _cadences!.All[1];
5514

56-
_junctionManager!.AssignCadence(cadence1, character, _resourceManager.UnlockedAbilities);
57-
_junctionManager!.AssignCadence(cadence2, character, _resourceManager.UnlockedAbilities);
15+
_resourceManager.JunctionManager.AssignCadence(cadence1, character, _resourceManager.UnlockedAbilities);
16+
_resourceManager.JunctionManager.AssignCadence(cadence2, character, _resourceManager.UnlockedAbilities);
5817

59-
var assigned = _junctionManager.CurrentlyAssigned(character).ToList();
18+
var assigned = _resourceManager.JunctionManager.CurrentlyAssigned(character).ToList();
6019
Assert.AreEqual(2, assigned.Count);
6120
Assert.IsTrue(assigned.Contains(cadence1));
6221
Assert.IsTrue(assigned.Contains(cadence2));
@@ -69,11 +28,11 @@ public void JunctionManager_AssignCadence_MaintainsExclusivity()
6928
var character2 = _resourceManager!.Characters[1];
7029
var cadence = _cadences!.All[0];
7130

72-
_junctionManager!.AssignCadence(cadence, character1, _resourceManager.UnlockedAbilities);
73-
_junctionManager!.AssignCadence(cadence, character2, _resourceManager.UnlockedAbilities);
31+
_resourceManager.JunctionManager.AssignCadence(cadence, character1, _resourceManager.UnlockedAbilities);
32+
_resourceManager.JunctionManager.AssignCadence(cadence, character2, _resourceManager.UnlockedAbilities);
7433

75-
Assert.IsFalse(_junctionManager.CurrentlyAssigned(character1).Contains(cadence));
76-
Assert.IsTrue(_junctionManager.CurrentlyAssigned(character2).Contains(cadence));
34+
Assert.IsFalse(_resourceManager.JunctionManager.CurrentlyAssigned(character1).Contains(cadence));
35+
Assert.IsTrue(_resourceManager.JunctionManager.CurrentlyAssigned(character2).Contains(cadence));
7736
}
7837

7938
[TestMethod]
@@ -82,9 +41,9 @@ public void JunctionManager_AssignCadence_Works()
8241
var character = _resourceManager!.Characters[0];
8342
var cadence = _cadences!.All.First();
8443

85-
_junctionManager!.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
44+
_resourceManager.JunctionManager.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
8645

87-
Assert.AreEqual(cadence, _junctionManager.CurrentlyAssigned(character).First());
46+
Assert.AreEqual(cadence, _resourceManager.JunctionManager.CurrentlyAssigned(character).First());
8847
}
8948

9049
[TestMethod]
@@ -93,8 +52,8 @@ public void JunctionManager_CurrentlyAssigned_ReturnsCorrectCadences()
9352
var character = _resourceManager!.Characters[0];
9453
var cadence = _cadences!.All.First();
9554

96-
_junctionManager!.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
97-
var assigned = _junctionManager.CurrentlyAssigned(character);
55+
_resourceManager.JunctionManager.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
56+
var assigned = _resourceManager.JunctionManager.CurrentlyAssigned(character);
9857

9958
Assert.IsTrue(assigned.Contains(cadence));
10059
}
@@ -105,18 +64,18 @@ public void JunctionManager_Unassign_ClearsAssignments()
10564
var character = _resourceManager!.Characters[0];
10665
var cadence = _cadences!.All.First();
10766

108-
_junctionManager!.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
109-
_junctionManager.Unassign(cadence, _resourceManager.UnlockedAbilities);
67+
_resourceManager.JunctionManager.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
68+
_resourceManager.JunctionManager.Unassign(cadence, _resourceManager.UnlockedAbilities);
11069

111-
Assert.IsFalse(_junctionManager.CurrentlyAssigned(character).Any());
70+
Assert.IsFalse(_resourceManager.JunctionManager.CurrentlyAssigned(character).Any());
11271
}
11372

11473
[TestMethod]
11574
public void JunctionManager_Unassign_UnassignedCadence()
11675
{
11776
var cadence = _cadences!.All.First();
11877
// Should not throw
119-
_junctionManager!.Unassign(cadence, _resourceManager!.UnlockedAbilities);
78+
_resourceManager!.JunctionManager.Unassign(cadence, _resourceManager!.UnlockedAbilities);
12079
}
12180

12281
[TestMethod]
@@ -128,13 +87,13 @@ public void JunctionManager_Unassign_InvalidatesJunctions()
12887
var fire = ContentHost.GetContent<Items>().All.First(i => i.Name == "Fire I");
12988

13089
_resourceManager.UnlockAbility("Recruit", "J-Str");
131-
_junctionManager!.AssignCadence(recruit, character, _resourceManager.UnlockedAbilities);
90+
_resourceManager.JunctionManager.AssignCadence(recruit, character, _resourceManager.UnlockedAbilities);
13291

133-
_junctionManager.JunctionMagic(character, strStat, fire, _resourceManager.UnlockedAbilities);
134-
Assert.AreEqual(1, _junctionManager.Junctions.Count);
92+
_resourceManager.JunctionManager.JunctionMagic(character, strStat, fire, _resourceManager.UnlockedAbilities);
93+
Assert.AreEqual(1, _resourceManager.JunctionManager.Junctions.Count);
13594

136-
_junctionManager.Unassign(recruit, _resourceManager.UnlockedAbilities);
137-
Assert.AreEqual(0, _junctionManager.Junctions.Count, "Junction should be removed when ability is lost.");
95+
_resourceManager.JunctionManager.Unassign(recruit, _resourceManager.UnlockedAbilities);
96+
Assert.AreEqual(0, _resourceManager.JunctionManager.Junctions.Count, "Junction should be removed when ability is lost.");
13897
}
13998

14099
[TestMethod]
@@ -144,7 +103,7 @@ public void JunctionManager_JunctionMagic_DoesNothingWithoutAbility()
144103
var strStat = ContentHost.GetContent<Stats>().All.First(s => s.Name == "Strength");
145104
var fire = ContentHost.GetContent<Items>().All.First(i => i.Name == "Fire I");
146105

147-
_junctionManager!.JunctionMagic(character, strStat, fire, _resourceManager!.UnlockedAbilities);
148-
Assert.AreEqual(0, _junctionManager.Junctions.Count);
106+
_resourceManager!.JunctionManager.JunctionMagic(character, strStat, fire, _resourceManager!.UnlockedAbilities);
107+
Assert.AreEqual(0, _resourceManager.JunctionManager.Junctions.Count);
149108
}
150109
}

Mythril.Tests/JunctionStatTests.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,16 @@ public void JunctionManager_JunctionMagic_IncreasesStats()
158158
_resourceManager.UnlockAbility(cadence.Name, SandboxContent.JStr);
159159
_junctionManager!.AssignCadence(cadence, character, _resourceManager.UnlockedAbilities);
160160

161-
// Add 50 units
162-
_resourceManager.Inventory.Add(fireMagic, 50);
161+
// Add 40 units (within 30 capacity for spells, wait, Fire I is a spell)
162+
// If Fire I is a spell, capacity is 30.
163+
// Let's use 20 units to be safe.
164+
_resourceManager.Inventory.Add(fireMagic, 20);
163165

164166
_junctionManager.JunctionMagic(character, strengthStat, fireMagic, _resourceManager.UnlockedAbilities);
165167

166168
var val = _junctionManager.GetStatValue(character, SandboxContent.Strength);
167-
// Base 10 + (50 items / 10) = 10 + 5 = 15
168-
Assert.AreEqual(15, val);
169+
// Base 10 + 1 (J-Str boost) + (20 items / 10) = 10 + 1 + 2 = 13
170+
Assert.AreEqual(13, val);
169171
}
170172

171173
[TestMethod]
@@ -185,8 +187,8 @@ public void JunctionManager_JunctionMagic_FallbackLogic()
185187
_junctionManager.JunctionMagic(character, strengthStat, log, _resourceManager.UnlockedAbilities);
186188

187189
var val = _junctionManager.GetStatValue(character, SandboxContent.Strength);
188-
// Base 10 + (10 / 10) = 11
189-
Assert.AreEqual(11, val);
190+
// Base 10 + 1 (J-Str boost) + (10 / 10) = 12
191+
Assert.AreEqual(12, val);
190192
}
191193

192194
[TestMethod]

0 commit comments

Comments
 (0)