public void Members_HasThreeStaticReadOnlyFields() { var fieldNames = EnumMembers .Select(f => f.Name) .ToArray(); fieldNames.ShouldContain("Good"); fieldNames.ShouldContain("Bad"); fieldNames.ShouldContain("Ugly"); }
public void ToString_ReturnsExpected() { var fields = EnumMembers.ToArray(); var fieldNamesAndValues = fields.ToDictionary(f => f.Name, f => f.GetValue(null)); foreach (var kvp in fieldNamesAndValues) { kvp.Key.ShouldBe(kvp.Value.ToString()); } }
public void ExplicitFromInt_Values_CastCorrectly() { var fields = EnumMembers.ToArray(); var opExplicitMethod = _type.GetMethods(BindingFlags.Static | BindingFlags.Public) .Where(f => f.Name == "op_Explicit") .Where(f => f.ReturnType == _type) .Single(f => f.GetParameters().Single().ParameterType == typeof(int)); var map = new Dictionary <string, int> { { "Good", 0 }, { "Bad", 1 }, { "Ugly", 2 } }; foreach (var kvp in map) { var field = fields.First(f => f.Name == kvp.Key); var expected = field.GetValue(null); var actual = opExplicitMethod.Invoke(null, new object[] { kvp.Value }); actual.ShouldBe(expected, "Value of " + kvp.Key + " has incorrect integer mapping"); } }
public SyntaxKindEnumModel(string @namespace, TokenInfo tokenInfo, GrammarInfo grammarInfo) { Namespace = @namespace; EnumMembers.Add( new EnumMemberModel { Name = "None", Value = 0 }); foreach (var token in tokenInfo.Tokens) { EnumMembers.Add( new EnumMemberModel { Name = token.Name, Value = token.Index }); } var syntaxEnumStart = 1000; foreach (var rule in grammarInfo.Rules) { EnumMembers.Add( new EnumMemberModel { Name = $"{rule.Name.ToPascalcase()}Syntax", Value = syntaxEnumStart++ }); } EnumMembers.Add( new EnumMemberModel { Name = "SyntaxList", Value = 2000 }); }