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")); }
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); }
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)); }
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"); }
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()); }
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); }
/// <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); }
/// <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); }
public void GetBreakConditions(out BreakCondition breakConditionBefore, out BreakCondition breakConditionAfter) { breakConditionBefore = BreakCondition.CanBreak; breakConditionAfter = BreakCondition.CanBreak; }