Example #1
0
        public void TracePath_Tests()
        {
            var path = new TreePath();

            Assert.AreEqual(path.Value, string.Empty);

            path.Push("Call");
            Assert.AreEqual(path.Value, "Call");

            path.Push("Service");
            Assert.AreEqual(path.Value, "Call/Service");

            path.Pop();
            Assert.AreEqual(path.Value, "Call");

            path.Pop();
            Assert.AreEqual(path.Value, string.Empty);
        }
Example #2
0
        /// <summary>
        /// Извлечение событий по пути
        /// </summary>
        /// <param name="path">путь</param>
        /// <returns></returns>
        public IEnumerable <TraceEvent> ByPath(string path)
        {
            var tracePath = new TreePath();
            int prevLevel = -1;

            foreach (var node in Flatten())
            {
                if (node.Level > prevLevel)
                {
                    tracePath.Push(node.Value.Name);
                }
                else if (node.Level < prevLevel)
                {
                    tracePath.Pop(prevLevel - node.Level);
                }

                if (tracePath.Value == path)
                {
                    yield return(node.Value);
                }

                prevLevel = node.Level;
            }
        }