Ejemplo n.º 1
0
        public void TestStepBreakOnError(Verdict verdictOutput, object _condition)
        {
            // _condition arg cannot be a BreakCondition as BreakCondition is not public.
            BreakCondition condition = (BreakCondition)_condition;
            var            l         = new PlanRunCollectorListener();
            TestPlan       plan      = new TestPlan();
            var            verdict   = new VerdictStep
            {
                VerdictOutput = verdictOutput
            };

            BreakConditionProperty.SetBreakCondition(verdict, condition);
            var verdict2 = new VerdictStep
            {
                VerdictOutput = Verdict.Pass
            };

            plan.Steps.Add(verdict);
            plan.Steps.Add(verdict2);
            var run = plan.Execute(new[] { l });

            Assert.AreEqual(verdictOutput, run.Verdict);
            Assert.AreEqual(1, l.StepRuns.Count);
            Assert.AreEqual(BreakCondition.Inherit, BreakConditionProperty.GetBreakCondition(verdict2));
            var log = l.LogString;

            Assert.IsTrue(log.Contains("Break issued from"));
        }
Ejemplo n.º 2
0
        private void ParseTaskStep(XPathNavigator nav, ref StepsGroup g)
        {
            string stepType = nav.GetAttribute("Type", string.Empty);

            string         breakconditionString = nav.GetAttribute("breakcondition", string.Empty);
            BreakCondition breakCondition       = BreakCondition.Never;

            if (!string.IsNullOrEmpty(breakconditionString))
            {
                breakCondition = (BreakCondition)Enum.Parse(typeof(BreakCondition), breakconditionString);
            }

            // TODO: Add execution flgs parsing

            MoveNavigatorToChildNode(ref nav, "Parameters");
            Parameters parameters = ParseTaskStepParameters(nav);

            Step s = StepsFactory.CreateStep(stepsAssemblies[stepType], parameters);

            s.BreakCondition = breakCondition;

            s.LogMessageAction = new Func <LogLevel, string, Task>(LogMessageAsync);

            g.Add(s);

            MoveNavigatorToParentNode(ref nav, 2);
        }
Ejemplo n.º 3
0
        private T General <T>(BreakCondition condition, PostRunner <T> postRunner)
        {
            var lines = FileLines;
            var moons = new Moon[lines.Length];

            for (int i = 0; i < lines.Length; i++)
            {
                moons[i] = Moon.Parse(lines[i]);
            }

            long steps  = 0;
            long xSteps = 0;
            long ySteps = 0;
            long zSteps = 0;

            for (; condition(steps, moons, ref xSteps, ref ySteps, ref zSteps); steps++)
            {
                for (int j = 0; j < moons.Length; j++)
                {
                    for (int k = j + 1; k < moons.Length; k++)
                    {
                        moons[j].ApplyGravity(moons[k]);
                    }
                }

                for (int j = 0; j < moons.Length; j++)
                {
                    moons[j].ApplyVelocity();
                }
            }

            return(postRunner(steps, moons, xSteps, ySteps, zSteps));
        }
Ejemplo n.º 4
0
        protected override string GetHeader()
        {
            if (InitialAssignment == null)
            {
                throw new MissingMandatoryElementException("Initial declaration is required in loop statement");
            }

            if (BreakCondition == null)
            {
                throw new MissingMandatoryElementException("Break condition is required in loop statement");
            }

            if (StepInstruction == null)
            {
                throw new MissingMandatoryElementException("Step instruction is required in loop statement");
            }

            return($"for ({InitialAssignment.GenerateCode()}; {BreakCondition.GenerateCode()}; {StepInstruction.GenerateCode()}) {{\n");
        }
Ejemplo n.º 5
0
            static string getEnumString(BreakCondition value)
            {
                if (value == 0)
                {
                    return("None");
                }
                var sb         = new StringBuilder();
                var breakFlags = breakConditions.Where(x => value.HasFlag(x));

                if (breakFlags.Any())
                {
                    sb.AppendFormat("Break on {0}", breakFlags.First().ToString().Substring("BreakOn".Length));
                    var breakFlags2 = breakFlags.Skip(1);
                    foreach (var x in breakFlags2)
                    {
                        sb.AppendFormat(" or {0}", x.ToString().Substring("BreakOn".Length));
                    }
                }
                return(sb.ToString());
            }
Ejemplo n.º 6
0
        private void ParseTaskStepsGroup(XPathNavigator nav, ref Job t)
        {
            StepsGroup g = new StepsGroup();

            string sgId = nav.GetAttribute("id", string.Empty);

            string         breakConditionString = nav.GetAttribute("breakcondition", string.Empty);
            BreakCondition breakcondition       = BreakCondition.Never;

            if (!string.IsNullOrEmpty(breakConditionString))
            {
                breakcondition = (BreakCondition)Enum.Parse(typeof(BreakCondition), breakConditionString);
            }
            g.BreakCondition = breakcondition;
            g.Id             = sgId;

            g.LogMessageAction = new Func <LogLevel, string, Task>(LogMessageAsync);

            t.JobStepsGroups.Add(g);

            g = ParseTaskSteps(nav, g);
        }
Ejemplo n.º 7
0
 /// <summary>	
 /// Layout uses this to determine the line-breaking behavior of the inline object among the text. 	
 /// </summary>	
 /// <param name="breakConditionBefore">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately preceding it. </param>
 /// <param name="breakConditionAfter">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately following it. </param>
 /// <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>
 /// <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>
 public void GetBreakConditions(out BreakCondition breakConditionBefore, out BreakCondition breakConditionAfter)
 {
     GetBreakConditions_(out breakConditionBefore, out breakConditionAfter);
 }
Ejemplo n.º 8
0
 /// <summary> Sets the break condition for a test step. </summary>
 /// <param name="step"> Which step to set it on.</param>
 /// <param name="condition"></param>
 public static void SetBreakCondition(ITestStepParent step, BreakCondition condition)
 {
     DynamicMemberTypeDataProvider.TestStepTypeData.BreakConditions.SetValue(step, condition);
 }
Ejemplo n.º 9
0
 public void GetBreakConditions(out BreakCondition breakConditionBefore, out BreakCondition breakConditionAfter)
 {
     breakConditionBefore = BreakCondition.CanBreak;
     breakConditionAfter  = BreakCondition.CanBreak;
 }
Ejemplo n.º 10
0
 /// <summary>
 /// Layout uses this to determine the line-breaking behavior of the inline object among the text.
 /// </summary>
 /// <param name="breakConditionBefore">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately preceding it. </param>
 /// <param name="breakConditionAfter">When this method returns, contains a value which indicates the line-breaking condition between the object and the content immediately following it. </param>
 /// <returns>If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. </returns>
 /// <unmanaged>HRESULT IDWriteInlineObject::GetBreakConditions([Out] DWRITE_BREAK_CONDITION* breakConditionBefore,[Out] DWRITE_BREAK_CONDITION* breakConditionAfter)</unmanaged>
 public void GetBreakConditions(out BreakCondition breakConditionBefore, out BreakCondition breakConditionAfter)
 {
     GetBreakConditions_(out breakConditionBefore, out breakConditionAfter);
 }