acdream/tests/AcDream.Core.Tests/Items/ItemUseabilityTests.cs

42 lines
1.5 KiB
C#

using AcDream.Core.Items;
namespace AcDream.Core.Tests.Items;
public sealed class ItemUseabilityTests
{
[Fact]
public void TargetedUse_hasHighTargetBits()
{
const uint healthKit = 0x000A0008u; // source contained, target self or contained
Assert.True(ItemUseability.IsTargeted(healthKit));
Assert.True(ItemUseability.AllowsSelfTarget(healthKit));
Assert.Equal(ItemUseability.Contained, ItemUseability.SourceFlags(healthKit));
Assert.Equal(ItemUseability.Self | ItemUseability.Contained, ItemUseability.TargetFlags(healthKit));
}
[Fact]
public void DirectContainedUse_isNotTargeted()
{
Assert.False(ItemUseability.IsTargeted(ItemUseability.Contained));
Assert.True(ItemUseability.IsDirectUseable(ItemUseability.Contained));
}
[Fact]
public void UseableNo_isNotDirectUseable()
{
Assert.False(ItemUseability.IsDirectUseable(ItemUseability.No));
}
[Fact]
public void LeastLimitedSourceUse_matchesRetailPriorityAndIgnoresObjSelf()
{
Assert.Equal(ItemUseability.Remote,
ItemUseability.LeastLimitedSourceUse(
ItemUseability.Remote | ItemUseability.Contained | ItemUseability.Wielded));
Assert.Equal(ItemUseability.Wielded,
ItemUseability.LeastLimitedSourceUse(ItemUseability.Wielded | ItemUseability.Self));
Assert.Equal(ItemUseability.Undef,
ItemUseability.LeastLimitedSourceUse(ItemUseability.ObjSelf));
}
}