public void VerifyWithOptionStatement(string enumName, OptionIdentifierPath[] optionNames
                                              // ReSharper disable once IdentifierTypo
                                              , IVariant[] optionConsts)
        {
            IEnumerable <IEnumBodyItem> GetEnumBodyItems()
            {
                var inputs = optionNames.ToArray <object>() // optionName
                             .Combine(
                    optionConsts.ToArray <object>()         // optionConst
                    );

                inputs.SilentOverflow = true;

                for (var i = 0; i < inputs.Count; i++, ++inputs)
                {
                    var current     = inputs.CurrentCombination.ToArray();
                    var optionName  = (OptionIdentifierPath)current[0];
                    var optionConst = (IVariant)current[1];
                    yield return(new OptionStatement {
                        Name = optionName, Value = optionConst
                    });
                }
            }

            ExpectedTopLevel = new EnumStatement {
                Name = enumName, Items = GetEnumBodyItems().ToList()
            };
        }
        /// <summary>
        /// Visits the <paramref name="statement"/>.
        /// </summary>
        /// <param name="statement"></param>
        protected virtual void VisitEnumStatement(EnumStatement statement)
        {
            VisitIdentifier(statement.Name);
            foreach (var item in statement.Items)
            {
                switch (item)
                {
                case EmptyStatement statementItem:
                    VisitEmptyStatement(statementItem);
                    break;

                case OptionStatement statementItem:
                    VisitOptionDescriptor(statementItem);
                    break;

                case EnumFieldDescriptor descriptorItem:
                    VisitEnumFieldDescriptor(descriptorItem);
                    break;

                case null:
                    throw ReportUnexpectedAlternative <IEnumBodyItem>();

                default:
                    throw ReportUnexpectedAlternative(item);
                }
            }
        }
Пример #3
0
 public void VerifyEnumStatementWithEmptyStatementAndWhiteSpace(string enumName, WhiteSpaceAndCommentOption option)
 {
     ExpectedTopLevel = new EnumStatement {
         Name = enumName, Items = { NewEmptyStatement }
     };
     RenderingOptions = new StringRenderingOptions {
         WhiteSpaceAndCommentRendering = option
     };
 }
        public void VerifyEnumFields(string enumName, string[] fieldNames)
        {
            IEnumerable <IEnumBodyItem> GetEnumFields() => fieldNames.Select <string, IEnumBodyItem>(
                x => new EnumFieldDescriptor {
                Name = x
            }
                );

            ExpectedTopLevel = new EnumStatement {
                Name = enumName, Items = GetEnumFields().ToList()
            };
        }
        public void VerifyEnumFieldsWithOptions(string enumName, string[] fieldNames
                                                , OptionIdentifierPath[] optionNames)
        {
            var optionConst = Constant.Create(true);

            IEnumerable <EnumValueOption> GetEnumValueOptions() => optionNames.Select(
                x => new EnumValueOption {
                Name = x, Value = optionConst
            }
                );

            IEnumerable <IEnumBodyItem> GetEnumFields() => fieldNames.Select <string, IEnumBodyItem>(
                x => new EnumFieldDescriptor {
                Name = x, Options = GetEnumValueOptions().ToList()
            }
                );

            ExpectedTopLevel = new EnumStatement {
                Name = enumName, Items = GetEnumFields().ToList()
            };
        }
Пример #6
0
 public void VerifyEnumStatementWithEmptyStatement(string enumName)
 {
     ExpectedTopLevel = new EnumStatement {
         Name = enumName, Items = { NewEmptyStatement }
     };
 }
 public void VerifyEmptyBody(string enumName)
 {
     ExpectedTopLevel = new EnumStatement {
         Name = enumName
     };
 }