mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-01-11 19:44:55 +00:00
49 lines
1.4 KiB
C#
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());
|
|
}
|
|
}
|
|
}
|