42 lines
1.5 KiB
C#
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));
|
|
}
|
|
}
|