コード例 #1
0
        public static void Follow(this IElementsContainer arg, string transition, IDictionary <string, object> withParams,
                                  Until until, int countDown)
        {
            Assert.IsTrue(countDown > 0, "Didn't match transition:" + transition + " looking for:" + until.s);

            Element elem;

            if (transition == null)
            {
                elem = (Element)arg;
            }
            else
            {
                elem = arg.LocateLink(transition);
            }

            if (elem == null)
            {
                Assert.Fail(string.Format("Didn't find element for transition: {0}", transition));
            }

            if (withParams != null)
            {
                using (ExecutionSteps.Log.BeginSection("Apply Parameters:"))
                {
                    ApplyParams(elem, withParams);
                }
            }

            DomContainer domContainer = DomContainer(arg);

            Transition(elem);

            if (until == null || domContainer.Locate(until.s) != null)
            {
                return;
            }

            domContainer.Follow(transition, withParams, until, countDown - 1);
        }