コード例 #1
0
ファイル: TravStepBack.cs プロジェクト: inthefabric/Fabric
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pIgnoredToType)
        {
            ITravPathItem  item  = ConsumeFirstPathItem(pPath, ToType);
            string         alias = ParamAt <string>(item, 0);
            ITravStepParam p     = Params[0];
            string         conflictAlias;

            if (!pPath.HasAlias(alias))
            {
                throw item.NewStepFault(FabFault.Code.IncorrectParamValue,
                                        p.Name + " '" + alias + "' could not be found.", 0);
            }

            if (pPath.DoesBackTouchAs(alias))
            {
                throw item.NewStepFault(FabFault.Code.InvalidStep,
                                        "Back('" + alias + "') cannot occur directly after the As(" + alias + ").", 0);
            }

            if (!pPath.AllowBackToAlias(alias, out conflictAlias))
            {
                throw item.NewStepFault(FabFault.Code.InvalidStep, "Cannot traverse back to " +
                                        "the As(" + alias + ") step; it exists within the As(" + conflictAlias + ") and " +
                                        "Back(" + conflictAlias + ") traversal path.", 0);
            }

            pPath.AddBackToAlias(alias);
            pPath.AddScript(".back(" + pPath.AddParam(alias) + ")");
        }
コード例 #2
0
        /*--------------------------------------------------------------------------------------------*/
        public override void ConsumePath(ITravPath pPath, Type pToType)
        {
            ITravPathItem  item  = ConsumeFirstPathItem(pPath, pToType);
            string         alias = ParamAt <string>(item, 0);
            ITravStepParam p     = Params[0];

            if (pPath.HasAlias(alias))
            {
                throw item.NewStepFault(FabFault.Code.IncorrectParamValue,
                                        p.Name + " '" + alias + "' is already in use.", 0);
            }

            pPath.AddAlias(alias);
            pPath.AddScript(".as(" + pPath.AddParam(alias) + ")");
        }
コード例 #3
0
ファイル: TravStep.cs プロジェクト: inthefabric/Fabric
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected T ParamAt <T>(ITravPathItem pItem, int pIndex)
        {
            ITravStepParam p = Params[pIndex];
            T      val       = pItem.GetParamAt <T>(pIndex);
            string valStr    = val + "";

            if (valStr.Length == 0)
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         p.Name + " is empty.", pIndex);
            }

            if (p.Min != null && long.Parse(valStr) < p.Min)
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         p.Name + " cannot be less than " + p.Min, pIndex);
            }

            if (p.Max != null && long.Parse(valStr) > p.Max)
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         p.Name + " cannot be greater than " + p.Max, pIndex);
            }

            if (p.LenMax != null && valStr.Length > p.LenMax)
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         p.Name + " cannot exceed " + p.LenMax + " characters.", pIndex);
            }

            if (p.ValidRegex != null && !Regex.IsMatch(valStr, p.ValidRegex))
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         "Invalid " + p.Name + " format.", pIndex);
            }

            if (p.AcceptedStrings != null && !p.AcceptedStrings.Contains(valStr))
            {
                throw pItem.NewStepFault(FabFault.Code.IncorrectParamValue,
                                         "Invalid " + p.Name + " value. Accepted values: " +
                                         string.Join(", ", p.AcceptedStrings) + ".", pIndex);
            }

            return(val);
        }