mirror of https://github.com/dahall/Vanara.git
107 lines
3.0 KiB
C#
107 lines
3.0 KiB
C#
using NUnit.Framework;
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Linq;
|
|
using static Vanara.Extensions.EnumExtensions;
|
|
|
|
namespace Vanara.Extensions.Tests
|
|
{
|
|
[TestFixture()]
|
|
public class EnumExtensionsTests
|
|
{
|
|
[Flags]
|
|
private enum TestEnum
|
|
{
|
|
[System.ComponentModel.Description("My first value.")]
|
|
Value1 = 1,
|
|
Value2 = 2,
|
|
[System.ComponentModel.Description("My third value.")]
|
|
Value3 = 4
|
|
}
|
|
|
|
private const TestEnum test = TestEnum.Value1 | TestEnum.Value2;
|
|
|
|
[Test()]
|
|
public void CheckHasValueTest()
|
|
{
|
|
Assert.DoesNotThrow(() => CheckHasValue(test));
|
|
Assert.Throws<InvalidEnumArgumentException>(() => CheckHasValue((TestEnum)8));
|
|
|
|
Assert.DoesNotThrow(() => CheckHasValue(ConsoleColor.Blue));
|
|
Assert.Throws<InvalidEnumArgumentException>(() => CheckHasValue((ConsoleColor)30));
|
|
}
|
|
|
|
[Test()]
|
|
public void ClearFlagsTest()
|
|
{
|
|
Assert.That(test.ClearFlags(TestEnum.Value1), Is.EqualTo(TestEnum.Value2));
|
|
Assert.That(test.ClearFlags(TestEnum.Value3), Is.EqualTo(test));
|
|
}
|
|
|
|
[Test()]
|
|
public void CombineFlagsTest()
|
|
{
|
|
var array = new[] {TestEnum.Value1, TestEnum.Value2};
|
|
Assert.That(array.CombineFlags(), Is.EqualTo(test));
|
|
}
|
|
|
|
[Test()]
|
|
public void GetDescriptionTest()
|
|
{
|
|
Assert.That(TestEnum.Value1.GetDescription(), Is.EqualTo("My first value."));
|
|
Assert.That(TestEnum.Value2.GetDescription(), Is.EqualTo("Value2"));
|
|
Assert.That(test.GetDescription(), Is.EqualTo("Value1, Value2"));
|
|
}
|
|
|
|
[Test()]
|
|
public void GetFlagsTest()
|
|
{
|
|
var en = test.GetFlags();
|
|
Assert.That(en.Count(), Is.EqualTo(2));
|
|
Assert.That(en.Contains(TestEnum.Value1), Is.True);
|
|
}
|
|
|
|
[Test()]
|
|
public void IsFlagSetTest()
|
|
{
|
|
Assert.That(test.IsFlagSet(TestEnum.Value1), Is.True);
|
|
Assert.That(test.IsFlagSet(TestEnum.Value3), Is.False);
|
|
|
|
Assert.Throws<ArgumentException>(() => ConsoleColor.Blue.IsFlagSet(ConsoleColor.Blue));
|
|
}
|
|
|
|
[Test()]
|
|
public void IsValidTest()
|
|
{
|
|
Assert.That(test.IsValid(), Is.True);
|
|
Assert.That((test | (TestEnum)8).IsValid(), Is.False);
|
|
Assert.That(ConsoleColor.Blue.IsValid(), Is.True);
|
|
Assert.That(((ConsoleColor)30).IsValid(), Is.False);
|
|
}
|
|
|
|
[Test()]
|
|
public void SetFlagsTest()
|
|
{
|
|
Assert.That(test.SetFlags(TestEnum.Value1, false), Is.EqualTo(TestEnum.Value2));
|
|
Assert.That(test.SetFlags(TestEnum.Value1, true), Is.EqualTo(test));
|
|
Assert.That(test.SetFlags(TestEnum.Value3, false), Is.EqualTo(test));
|
|
Assert.That(test.SetFlags(TestEnum.Value3, true), Is.EqualTo(TestEnum.Value1 | TestEnum.Value2 | TestEnum.Value3));
|
|
}
|
|
|
|
[Test()]
|
|
public void SetFlagsTest1()
|
|
{
|
|
var t = test;
|
|
SetFlags(ref t, TestEnum.Value3, false);
|
|
Assert.That(t, Is.EqualTo(test));
|
|
SetFlags(ref t, TestEnum.Value1, false);
|
|
Assert.That(t, Is.EqualTo(TestEnum.Value2));
|
|
SetFlags(ref t, TestEnum.Value2, true);
|
|
Assert.That(t, Is.EqualTo(TestEnum.Value2));
|
|
SetFlags(ref t, TestEnum.Value1, true);
|
|
Assert.That(t, Is.EqualTo(test));
|
|
SetFlags(ref t, TestEnum.Value1, true);
|
|
Assert.That(t, Is.EqualTo(test));
|
|
}
|
|
}
|
|
} |