[TestFixture]
public class EnumTest
{
[Test]
public void SimpleTest()
{
Console.WriteLine(EnumGender.Female.GetDescriptionOriginal());
Console.WriteLine(EnumGender.Male.GetDescriptionOriginal());
Console.WriteLine(EnumGender.Other.GetDescriptionOriginal());
var t1 = EnumGender.Male | EnumGender.Female;
Console.WriteLine((t1 & EnumGender.Male) == EnumGender.Male);
Console.WriteLine(t1 & ~EnumGender.Male);
Console.WriteLine(Enum.IsDefined(typeof(EnumGender), 0));
}
[Test]
public void GetDescriptionOriginal_Test()
{
var enums = this.GetTestEnums();
Console.WriteLine(enums.Count);
TestHelper.InvokeAndWriteAll(() =>
{
System.Threading.Tasks.Parallel.For(0, 1000000, (i, obj) =>
{
foreach (var item in enums)
{
var a = item.GetDescriptionOriginal();
}
});
});
}
[Test]
public void GetDescriptionByDictionaryWithLocak_Test()
{
var enums = this.GetTestEnums();
Console.WriteLine(enums.Count);
TestHelper.InvokeAndWriteAll(() =>
{
System.Threading.Tasks.Parallel.For(0, 1000000, (i, obj) =>
{
foreach (var item in enums)
{
var a = item.GetDescriptionByDictionaryWithLocak();
}
});
});
}
[Test]
public void GetDescriptionByDictionaryWithException_Test()
{
var enums = this.GetTestEnums();
Console.WriteLine(enums.Count);
TestHelper.InvokeAndWriteAll(() =>
{
System.Threading.Tasks.Parallel.For(0, 1000000, (i, obj) =>
{
foreach (var item in enums)
{
var a = item.GetDescriptionByDictionaryWithException();
}
});
});
}
[Test]
public void GetDescriptionByConcurrentDictionary_Test()
{
var enums = this.GetTestEnums();
Console.WriteLine(enums.Count);
TestHelper.InvokeAndWriteAll(() =>
{
System.Threading.Tasks.Parallel.For(0, 1000000, (i, obj) =>
{
foreach (var item in enums)
{
var a = item.GetDescriptionByConcurrentDictionary();
}
});
});
}
private List<Enum> GetTestEnums()
{
List<Enum> res = new List<Enum>();
res.Add(EnumMutliFTest.T1);
res.Add(EnumMutliFTest.T2);
res.Add(EnumMutliFTest.T3);
res.Add(EnumMutliFTest.T4);
res.Add(EnumMutliFTest.T5);
res.Add(EnumMutliFTest.T6);
res.Add(EnumMutliFTest.T7);
res.Add(EnumMutliFTest.T8);
res.Add(EnumMutliFTest.T9);
res.Add(EnumMutliFTest.T10);
res.Add(EnumMutliFTest.T11);
res.Add(EnumMutliFTest.T12);
res.Add(EnumMutliFTest.T13);
res.Add(EnumMutliFTest.T14);
res.Add(EnumMutliFTest.T15);
res.Add(EnumMutliFTest.T16);
res.Add(EnumMutliFTest.T17);
res.Add(EnumMutliFTest.T18);
res.Add(EnumMutliFTest.T19);
res.Add(EnumMutliFTest.T20);
res.Add(EnumMutliFTest.T21);
res.Add(EnumMutliFTest.T22);
res.Add(EnumMutliFTest.T23);
res.Add(EnumMutliFTest.T24);
res.Add(EnumMutliFTest.T25);
res.Add(EnumMutliFTest.T26);
res.Add(EnumMutliFTest.T27);
res.Add(EnumMutliFTest.T28);
res.Add(EnumMutliFTest.T29);
res.Add(EnumMutliFTest.T30);
res.Add(EnumMutliFTest.T31);
res.Add(EnumMutliFTest.T32);
res.Add(EnumMutliFTest.T33);
res.Add(EnumMutliFTest.T34);
res.Add(EnumMutliFTest.T35);
res.Add(EnumMutliFTest.T36);
res.Add(EnumMutliFTest.T37);
res.Add(EnumMutliFTest.T38);
res.Add(EnumMutliFTest.T3);
res.Add(EnumMutliFTest.T18);
res.Add(EnumMutliFTest2.T21);
res.Add(EnumMutliFTest2.T22);
res.Add(EnumMutliFTest2.T23);
res.Add(EnumMutliFTest2.T24);
res.Add(EnumMutliFTest2.T25);
res.Add(EnumMutliFTest2.T26);
res.Add(EnumMutliFTest2.T27);
res.Add(EnumMutliFTest2.T28);
res.Add(EnumMutliFTest2.T29);
res.Add(EnumMutliFTest2.T210);
res.Add(EnumMutliFTest2.T211);
res.Add(EnumMutliFTest2.T212);
res.Add(EnumMutliFTest2.T213);
res.Add(EnumMutliFTest2.T214);
res.Add(EnumMutliFTest2.T215);
res.Add(EnumMutliFTest2.T216);
res.Add(EnumMutliFTest2.T217);
res.Add(EnumMutliFTest2.T218);
res.Add(EnumMutliFTest2.T219);
res.Add(EnumMutliFTest2.T220);
res.Add(EnumMutliFTest2.T221);
res.Add(EnumMutliFTest2.T222);
res.Add(EnumMutliFTest2.T223);
res.Add(EnumMutliFTest2.T224);
res.Add(EnumMutliFTest2.T225);
res.Add(EnumMutliFTest2.T226);
res.Add(EnumMutliFTest2.T227);
res.Add(EnumMutliFTest2.T228);
res.Add(EnumMutliFTest2.T229);
res.Add(EnumMutliFTest2.T230);
res.Add(EnumMutliFTest2.T231);
res.Add(EnumMutliFTest2.T232);
res.Add(EnumMutliFTest2.T233);
res.Add(EnumMutliFTest2.T234);
res.Add(EnumMutliFTest2.T235);
res.Add(EnumMutliFTest2.T236);
res.Add(EnumMutliFTest2.T237);
res.Add(EnumMutliFTest2.T238);
res.Add(EnumMutliFTest2.T23);
res.Add(EnumMutliFTest2.T218);
return res;
}
public enum EnumMutliFTest
{
[System.ComponentModel.Description("DT1")]
T1,
[System.ComponentModel.Description("DT2")]
T2,
[System.ComponentModel.Description("DT3")]
T3,
[System.ComponentModel.Description("DT4")]
T4,
[System.ComponentModel.Description("DT5")]
T5,
[System.ComponentModel.Description("DT6")]
T6,
[System.ComponentModel.Description("DT7")]
T7,
[System.ComponentModel.Description("DT8")]
T8,
[System.ComponentModel.Description("DT9")]
T9,
[System.ComponentModel.Description("DT10")]
T10,
[System.ComponentModel.Description("DT11")]
T11,
[System.ComponentModel.Description("DT12")]
T12,
[System.ComponentModel.Description("DT13")]
T13,
[System.ComponentModel.Description("DT14")]
T14,
[System.ComponentModel.Description("DT15")]
T15,
[System.ComponentModel.Description("DT16")]
T16,
[System.ComponentModel.Description("DT17")]
T17,
[System.ComponentModel.Description("DT18")]
T18,
[System.ComponentModel.Description("DT19")]
T19,
[System.ComponentModel.Description("DT20")]
T20,
[System.ComponentModel.Description("DT21")]
T21,
[System.ComponentModel.Description("DT22")]
T22,
[System.ComponentModel.Description("DT23")]
T23,
[System.ComponentModel.Description("DT24")]
T24,
[System.ComponentModel.Description("DT25")]
T25,
[System.ComponentModel.Description("DT26")]
T26,
[System.ComponentModel.Description("DT27")]
T27,
[System.ComponentModel.Description("DT28")]
T28,
[System.ComponentModel.Description("DT29")]
T29,
[System.ComponentModel.Description("DT30")]
T30,
[System.ComponentModel.Description("DT31")]
T31,
[System.ComponentModel.Description("DT32")]
T32,
[System.ComponentModel.Description("DT33")]
T33,
[System.ComponentModel.Description("DT34")]
T34,
[System.ComponentModel.Description("DT35")]
T35,
[System.ComponentModel.Description("DT36")]
T36,
[System.ComponentModel.Description("DT37")]
T37,
[System.ComponentModel.Description("DT38")]
T38,
}
public enum EnumMutliFTest2
{
[System.ComponentModel.Description("DT21")]
T21,
[System.ComponentModel.Description("DT22")]
T22,
[System.ComponentModel.Description("DT23")]
T23,
[System.ComponentModel.Description("DT24")]
T24,
[System.ComponentModel.Description("DT25")]
T25,
[System.ComponentModel.Description("DT26")]
T26,
[System.ComponentModel.Description("DT27")]
T27,
[System.ComponentModel.Description("DT28")]
T28,
[System.ComponentModel.Description("DT29")]
T29,
[System.ComponentModel.Description("DT210")]
T210,
[System.ComponentModel.Description("DT211")]
T211,
[System.ComponentModel.Description("DT212")]
T212,
[System.ComponentModel.Description("DT213")]
T213,
[System.ComponentModel.Description("DT214")]
T214,
[System.ComponentModel.Description("DT215")]
T215,
[System.ComponentModel.Description("DT216")]
T216,
[System.ComponentModel.Description("DT217")]
T217,
[System.ComponentModel.Description("DT218")]
T218,
[System.ComponentModel.Description("DT219")]
T219,
[System.ComponentModel.Description("DT220")]
T220,
[System.ComponentModel.Description("DT221")]
T221,
[System.ComponentModel.Description("DT222")]
T222,
[System.ComponentModel.Description("DT223")]
T223,
[System.ComponentModel.Description("DT224")]
T224,
[System.ComponentModel.Description("DT225")]
T225,
[System.ComponentModel.Description("DT226")]
T226,
[System.ComponentModel.Description("DT227")]
T227,
[System.ComponentModel.Description("DT228")]
T228,
[System.ComponentModel.Description("DT229")]
T229,
[System.ComponentModel.Description("DT230")]
T230,
[System.ComponentModel.Description("DT231")]
T231,
[System.ComponentModel.Description("DT232")]
T232,
[System.ComponentModel.Description("DT233")]
T233,
[System.ComponentModel.Description("DT234")]
T234,
[System.ComponentModel.Description("DT235")]
T235,
[System.ComponentModel.Description("DT236")]
T236,
[System.ComponentModel.Description("DT237")]
T237,
[System.ComponentModel.Description("DT238")]
T238,
}
//['dʒendə]
[Flags]
public enum EnumGender
{
None,
[System.ComponentModel.Description("男")]
Male,
[System.ComponentModel.Description("女")]
Female,
Other,
}
}