Files
ICD.Common.Utils/ICD.Common.Utils.Tests/Extensions/EnumExtensionsTest.cs

49 lines
1.4 KiB
C#

using System;
using ICD.Common.Utils.Extensions;
using NUnit.Framework;
namespace ICD.Common.Utils.Tests.Extensions
{
[TestFixture]
public sealed class EnumExtensionsTest
{
[Flags]
public enum eTestEnum
{
A = 1,
B = 2,
C = 4
}
[TestCase(eTestEnum.A, eTestEnum.A, true)]
[TestCase(eTestEnum.A | eTestEnum.B, eTestEnum.A, true)]
[TestCase(eTestEnum.A | eTestEnum.B, eTestEnum.C, false)]
public void HasFlagTest(eTestEnum value, eTestEnum flag, bool expected)
{
Assert.AreEqual(expected, EnumExtensions.HasFlag(value, flag));
}
[TestCase(eTestEnum.A, eTestEnum.A, true)]
[TestCase(eTestEnum.A | eTestEnum.B, eTestEnum.A, true)]
[TestCase(eTestEnum.A | eTestEnum.B, eTestEnum.C, false)]
[TestCase(eTestEnum.A, eTestEnum.A | eTestEnum.B, false)]
[TestCase(eTestEnum.A | eTestEnum.B, eTestEnum.A | eTestEnum.B, true)]
public void HasFlagsTest(eTestEnum value, eTestEnum flags, bool expected)
{
Assert.AreEqual(expected, value.HasFlags(flags));
}
[TestCase(eTestEnum.A, eTestEnum.B)]
[TestCase(eTestEnum.B, eTestEnum.C)]
[TestCase(eTestEnum.C, eTestEnum.A)]
[TestCase(eTestEnum.A | eTestEnum.B, null)]
public void CycleNextTest(eTestEnum value, eTestEnum? expected)
{
if (EnumUtils.HasMultipleFlags(value))
Assert.Catch(typeof(InvalidOperationException), () => value.CycleNext());
else
Assert.AreEqual(expected, value.CycleNext());
}
}
}