コード例 #1
0
        /// <summary>
        /// Attempts to get a root object, from which to begin traversal of the path.
        /// </summary>
        /// <returns><c>true</c>, if the root object was retrieved, <c>false</c> otherwise.</returns>
        /// <param name="walker">A TALES path walker.</param>
        /// <param name="element">A ZPT element.</param>
        /// <param name="model">The TALES model.</param>
        /// <param name="result">Exposes the result of this operation.</param>
        protected virtual bool TryGetTraversalRoot(PathWalker walker,
                                               ZptElement element,
                                               TalesModel model,
                                               out object result)
        {
            bool output;

              if(walker.NextPart()
             && model.TryGetLocalRootObject(walker.CurrentPart.Value, element, out result))
              {
            output = true;
              }
              else
              {
            output = false;
            result = null;
              }

              return output;
        }
コード例 #2
0
ファイル: TestPathWalker.cs プロジェクト: csf-dev/ZPT-Sharp
        public void TestCurrentPart(string pathString, int component, int part, string expectedValue)
        {
            // Arrange
              var path = Path.Create(pathString);
              var sut = new PathWalker(path);

              for(int i = 0; i < component; i++)
              {
            sut.NextComponent();
              }

              // Act
              for(int i = 0; i < part; i++)
              {
            sut.NextPart();
              }

              // Assert
              Assert.NotNull(sut.CurrentPart, "Result nullability");
              Assert.AreEqual(expectedValue, sut.CurrentPart.Value, "Result value");
        }
コード例 #3
0
        /// <summary>
        /// Walks and evaluates a single TALES path component.
        /// </summary>
        /// <returns>
        /// <c>true</c>, if the path component was successfully evaluated, <c>false</c> otherwise.
        /// </returns>
        /// <param name="walker">A TALES path walker, containing a path.</param>
        /// <param name="context">The rendering context for the expression being evaluated.</param>
        /// <param name="model">The ZPT model, providing the context for evaluation.</param>
        /// <param name="result">Exposes the result of the evaluation.</param>
        private bool WalkComponent(PathWalker walker, IRenderingContext context, ITalesModel model, out object result)
        {
            bool output;

              if(this.TryGetTraversalRoot(walker, context, model, out result))
              {
            object traversalChild;
            output = true;

            while(walker.NextPart())
            {
              string partName;

              if(this.TryGetPartName(walker.CurrentPart, context, model, out partName)
             && ObjectTraverser.Default.Traverse(result, partName, out traversalChild, context))
              {
            result = traversalChild;
              }
              else
              {
            output = false;
            result = null;
            break;
              }
            }
              }
              else
              {
            output = false;
            result = null;
              }

              return output;
        }
コード例 #4
0
        /// <summary>
        /// Attempts to get a root object, from which to begin traversal of the path.
        /// </summary>
        /// <returns><c>true</c>, if the root object was retrieved, <c>false</c> otherwise.</returns>
        /// <param name="walker">A TALES path walker.</param>
        /// <param name="context">The rendering context.</param>
        /// <param name="model">The TALES model.</param>
        /// <param name="result">Exposes the result of this operation.</param>
        protected virtual bool TryGetTraversalRoot(PathWalker walker,
                                               IRenderingContext context,
                                               ITalesModel model,
                                               out object result)
        {
            bool output;

              if(walker.NextPart()
             && model.TryGetRootObject(walker.CurrentPart.Value, context, out result))
              {
            output = true;
              }
              else
              {
            output = false;
            result = null;
              }

              return output;
        }
コード例 #5
0
ファイル: TestPathWalker.cs プロジェクト: csf-dev/ZPT-Sharp
        public void TestNextPart(string pathString, int component, int numberOfCalls, bool expectedResult)
        {
            // Arrange
              var path = Path.Create(pathString);
              var sut = new PathWalker(path);
              bool result = false;

              for(int i = 0; i < component; i++)
              {
            sut.NextComponent();
              }

              // Act
              for(int i = 0; i < numberOfCalls; i++)
              {
            result = sut.NextPart();
              }

              // Assert
              Assert.AreEqual(expectedResult, result);
        }
コード例 #6
0
ファイル: TestPathWalker.cs プロジェクト: csf-dev/ZPT-Sharp
        public void TestReset()
        {
            // Arrange
              var path = Path.Create("foo/bar|wibble/wobble");
              var sut = new PathWalker(path);

              sut.NextComponent();
              sut.NextComponent();
              sut.NextPart();
              sut.NextPart();

              // Act
              sut.Reset();

              // Assert
              Assert.IsTrue(sut.NextComponent(),              "NextComponent result");
              Assert.IsTrue(sut.NextPart(),                   "NextPart result");
              Assert.AreEqual("foo",  sut.CurrentPart.Value,  "CurrentPart");
        }
コード例 #7
0
ファイル: TestPathWalker.cs プロジェクト: csf-dev/ZPT-Sharp
        public void TestNextPartException()
        {
            // Arrange
              var path = Path.Create("foo/bar");
              var sut = new PathWalker(path);

              // Act
              sut.NextPart();

              // Assert (by observing an exception)
        }