//
// SkillsTests.cs
//
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Xunit.Abstractions;
namespace NosSmooth.Game.Tests.Modules;
///
/// Tests for Game.Skills.
///
public class SkillsTests
{
private readonly ITestOutputHelper _testOutputHelper;
///
/// Initializes a new instance of the class.
///
/// The test output helper.
public SkillsTests(ITestOutputHelper testOutputHelper)
{
_testOutputHelper = testOutputHelper;
}
///
/// Tests packets from init_morph_use.log.
///
/// A representing the asynchronous unit test.
[Fact]
public async Task Init_Morph_Use()
{
var data = PacketFileClient.CreateFor("init_morph_use", _testOutputHelper);
data.Game.Skills.ShouldBeNull();
await data.Client.ExecuteUntilLabelAsync("AFTER_SKILLS_INITIALIZED");
data.Game.Skills.ShouldNotBeNull();
data.Game.Skills.PrimarySkill.SkillVNum.ShouldBe(240);
data.Game.Skills.SecondarySkill.SkillVNum.ShouldBe(241);
data.Game.Skills.OtherSkills.ShouldNotBeEmpty();
data.Game.Skills.OtherSkills.Count.ShouldBe(3);
data.Game.Skills.OtherSkills.Last().SkillVNum.ShouldBe(236);
await data.Client.ExecuteUntilLabelAsync("AFTER_MORPH");
data.Game.Skills.ShouldNotBeNull();
data.Game.Skills.PrimarySkill.SkillVNum.ShouldBe(922);
data.Game.Skills.SecondarySkill.SkillVNum.ShouldBe(922);
data.Game.Skills.OtherSkills.Count.ShouldBe(11);
data.Game.Skills.OtherSkills.ShouldAllBe(x => x.SkillVNum > 921 && x.SkillVNum < 933);
await data.Client.ExecuteUntilLabelAsync("AFTER_MORPH_OFF");
data.Game.Skills.ShouldNotBeNull();
data.Game.Skills.PrimarySkill.SkillVNum.ShouldBe(240);
data.Game.Skills.SecondarySkill.SkillVNum.ShouldBe(241);
data.Game.Skills.OtherSkills.ShouldNotBeEmpty();
data.Game.Skills.OtherSkills.Count.ShouldBe(3);
data.Game.Skills.OtherSkills.Last().SkillVNum.ShouldBe(236);
await data.Client.ExecuteUntilLabelAsync("AFTER_SKILL_USED");
data.Game.Skills.ShouldNotBeNull();
data.Game.Skills.PrimarySkill.IsOnCooldown.ShouldBeTrue();
await data.Client.ExecuteUntilLabelAsync("AFTER_SKILL_REFRESHED");
data.Game.Skills.ShouldNotBeNull();
data.Game.Skills.PrimarySkill.IsOnCooldown.ShouldBeFalse();
}
}