public void RaiseException_FromInvalidMetatag() { var ex1 = Assert.Throws <ArgumentNullException>(() => EnumUtil.FromTag <MyEnum>(null, "invalid")); var ex2 = Assert.Throws <ArgumentNullException>(() => EnumUtil.FromTag <MyEnum>(" ", "invalid")); var ex3 = Assert.Throws <ArgumentNullException>(() => EnumUtil.FromTag <MyEnum>(CustomIdKey, null)); var ex4 = Assert.Throws <ArgumentNullException>(() => EnumUtil.FromTag <MyEnum>(CustomIdKey, " ")); var ex5 = Assert.Throws <InvalidCastException>(() => EnumUtil.FromTag <MyEnum>(CustomIdKey, "invalid")); Assert.Equal("tagKey", ex1.ParamName); Assert.Equal("tagKey", ex2.ParamName); Assert.Equal("tagValue", ex3.ParamName); Assert.Equal("tagValue", ex4.ParamName); Assert.Equal( "The Enum could not be converted because there is no value signed with the informed tag", ex5.Message); }
public void Parse_FromValidMetatag() { var firstOption = EnumUtil.FromTag <MyEnum>(DescriptionKey, "My First Option"); var thirdOption1 = EnumUtil.FromTag <MyEnum>(DescriptionKey, "My Third Option"); var secondOption = EnumUtil.FromTag <MyEnum>(CustomIdKey, "second-option"); var thirdOption2 = EnumUtil.FromTag <MyEnum>(CustomIdKey, nameof(MyEnum.ThirdOption)); Assert.Equal(MyEnum.FirstOption, firstOption); Assert.Equal(MyEnum.SecondOption, secondOption); Assert.Equal(MyEnum.ThirdOption, thirdOption1); Assert.Equal(MyEnum.ThirdOption, thirdOption2); }