Enums
Enums are created as instances of EnumType
.
Creating enum
Direction enum
[Fact]
public void Define_enum()
{
/* Given */
/* When */
var Enum = new EnumType(
"Direction",
new EnumValues
{
"NORTH",
"EAST",
"SOUTH",
"WEST"
});
/* Then */
Assert.True(Enum.Contains("NORTH"));
Assert.True(Enum.Contains("EAST"));
Assert.True(Enum.Contains("SOUTH"));
Assert.True(Enum.Contains("WEST"));
}
Serialization
From input value
[Theory]
[InlineData("success", "SUCCESS")]
[InlineData("FAILURE", "FAILURE")]
[InlineData("Inconclusive", "INCONCLUSIVE")]
public void ParseValue(object input, string expected)
{
/* Given */
var Enum = new EnumType("TestResult", new EnumValues
{
["SUCCESS"] = null,
["FAILURE"] = null,
["INCONCLUSIVE"] = null
});
/* When */
var actual = Enum.ParseValue(input);
/* Then */
Assert.Equal(expected, actual);
}
From AST node value
[Theory]
[InlineData("success", "SUCCESS")]
[InlineData("FAILURE", "FAILURE")]
[InlineData("Inconclusive", "INCONCLUSIVE")]
public void ParseLiteral(string input, string expected)
{
/* Given */
ValueBase astValue = input;
var Enum = new EnumType("TestResult", new EnumValues
{
["SUCCESS"] = null,
["FAILURE"] = null,
["INCONCLUSIVE"] = null
});
/* When */
var actual = Enum.ParseLiteral(astValue);
/* Then */
Assert.Equal(expected, actual);
}
Serialize
[Theory]
[InlineData("success", "SUCCESS")]
[InlineData("FAILURE", "FAILURE")]
[InlineData("Inconclusive", "INCONCLUSIVE")]
public void Serialize(object input, string expected)
{
/* Given */
var Enum = new EnumType("TestResult", new EnumValues
{
["SUCCESS"] = null,
["FAILURE"] = null,
["INCONCLUSIVE"] = null
});
/* When */
var actual = Enum.Serialize(input);
/* Then */
Assert.Equal(expected, actual);
}