Example #1
0
        public void Members_HasThreeStaticReadOnlyFields()
        {
            var fieldNames = EnumMembers
                             .Select(f => f.Name)
                             .ToArray();

            fieldNames.ShouldContain("Good");
            fieldNames.ShouldContain("Bad");
            fieldNames.ShouldContain("Ugly");
        }
Example #2
0
        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());
            }
        }
Example #3
0
        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
            });
        }