acdream/tests/AcDream.Core.Net.Tests/WorldSessionCombatTests.cs

77 lines
2.1 KiB
C#

using System.Net;
using AcDream.Core.Combat;
using AcDream.Core.Net;
using AcDream.Core.Net.Messages;
namespace AcDream.Core.Net.Tests;
public sealed class WorldSessionCombatTests
{
private static WorldSession NewSession()
{
var ep = new IPEndPoint(IPAddress.Loopback, 65000);
return new WorldSession(ep);
}
[Fact]
public void SendChangeCombatMode_UsesSequenceAndRetailModeValue()
{
using var session = NewSession();
byte[]? captured = null;
session.GameActionCapture = body => captured = body;
session.SendChangeCombatMode(CombatMode.Magic);
Assert.NotNull(captured);
Assert.Equal(CharacterActions.BuildChangeCombatMode(
1,
CharacterActions.CombatMode.Magic), captured);
}
[Fact]
public void SendMeleeAttack_UsesRetailMeleeBuilder()
{
using var session = NewSession();
byte[]? captured = null;
session.GameActionCapture = body => captured = body;
session.SendMeleeAttack(0x50000002u, AttackHeight.High, 0.75f);
Assert.NotNull(captured);
Assert.Equal(AttackTargetRequest.BuildMelee(
1,
0x50000002u,
(uint)AttackHeight.High,
0.75f), captured);
}
[Fact]
public void SendMissileAttack_UsesRetailMissileBuilder()
{
using var session = NewSession();
byte[]? captured = null;
session.GameActionCapture = body => captured = body;
session.SendMissileAttack(0x50000003u, AttackHeight.Low, 0.5f);
Assert.NotNull(captured);
Assert.Equal(AttackTargetRequest.BuildMissile(
1,
0x50000003u,
(uint)AttackHeight.Low,
0.5f), captured);
}
[Fact]
public void SendCancelAttack_UsesRetailCancelBuilder()
{
using var session = NewSession();
byte[]? captured = null;
session.GameActionCapture = body => captured = body;
session.SendCancelAttack();
Assert.NotNull(captured);
Assert.Equal(AttackTargetRequest.BuildCancel(1), captured);
}
}