impl
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
using SlaySharp.Core.Catalogs;
|
||||
using SlaySharp.Core.Models;
|
||||
using SlaySharp.Core.Run;
|
||||
using Xunit;
|
||||
|
||||
namespace SlaySharp.Tests;
|
||||
|
||||
public class GameRunTests
|
||||
{
|
||||
[Fact]
|
||||
public void MapGraph_GeneratesSevenFloors_WithBossAtTop()
|
||||
{
|
||||
var map = MapGraph.GenerateAct1Map(seed: 42);
|
||||
|
||||
Assert.Equal(7, map.Floors.Count);
|
||||
Assert.NotEmpty(map.Floors[0]);
|
||||
Assert.Single(map.Floors[6]);
|
||||
Assert.Equal(MapNodeType.Boss, map.Floors[6][0].Type);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GameRun_StartNewRun_InitializesCorrectly()
|
||||
{
|
||||
var run = new GameRun();
|
||||
run.StartNewRun(seed: 42);
|
||||
|
||||
Assert.NotNull(run.Player);
|
||||
Assert.Equal(70, run.Player.MaxHp);
|
||||
Assert.Equal(70, run.Player.CurrentHp);
|
||||
Assert.Equal(60, run.DevCredits);
|
||||
Assert.Equal(RunScreen.Map, run.CurrentScreen);
|
||||
Assert.NotEmpty(run.Player.MasterDeck);
|
||||
Assert.Equal(3, run.Player.Relics.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GameRun_SelectFloor0Node_TransitionsToCorrectScreen()
|
||||
{
|
||||
var run = new GameRun();
|
||||
run.StartNewRun(seed: 42);
|
||||
|
||||
var firstFloorNode = run.Map.Floors[0][0];
|
||||
Assert.True(run.CanVisitNode(firstFloorNode));
|
||||
|
||||
run.SelectNode(firstFloorNode);
|
||||
|
||||
Assert.Contains(firstFloorNode.Id, run.VisitedNodeIds);
|
||||
Assert.Equal(RunScreen.Combat, run.CurrentScreen);
|
||||
Assert.NotNull(run.ActiveCombat);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void StoryEvent_StackOverflowOption_ModifiesDeckAndHp()
|
||||
{
|
||||
var run = new GameRun();
|
||||
run.StartNewRun(seed: 42);
|
||||
var initialDeckCount = run.Player.MasterDeck.Count;
|
||||
var initialMaxHp = run.Player.MaxHp;
|
||||
|
||||
var stackOverflowEvent = StoryEvent.GetAct1Events().First(e => e.Id == "stackoverflow");
|
||||
var copyPasteOption = stackOverflowEvent.Options[0];
|
||||
|
||||
copyPasteOption.ApplyEffect(run);
|
||||
|
||||
Assert.Equal(initialDeckCount + 1, run.Player.MasterDeck.Count);
|
||||
Assert.True(run.Player.MasterDeck.Last().Upgraded);
|
||||
Assert.Equal(initialMaxHp - 8, run.Player.MaxHp);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GameRun_CompleteCombat_AwardsDevCredits()
|
||||
{
|
||||
var run = new GameRun();
|
||||
run.StartNewRun(seed: 42);
|
||||
var startCredits = run.DevCredits;
|
||||
|
||||
var firstFloorNode = run.Map.Floors[0][0];
|
||||
run.SelectNode(firstFloorNode);
|
||||
|
||||
run.CompleteCombatAndClaimRewards(bonusCredits: 35);
|
||||
|
||||
Assert.Equal(startCredits + 35, run.DevCredits);
|
||||
Assert.Equal(RunScreen.Map, run.CurrentScreen);
|
||||
Assert.Null(run.ActiveCombat);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user