Exemplo n.º 1
0
        public void EnumerateNamedNodesWithNestedConditions()
        {
            var doc = Load(@"---
items:
  - first
  - when X:
     - when Y:
        - name: second
          other: xyz
     - third
  - name: fourth
");

            var nodesWithoutGoal = parser.EnumerateNamedNodesOf(doc.RootNode, "items");

            nodesWithoutGoal.Should()
            .NotBeNull()
            .And.HaveCount(2)
            .And.Contain(pair => pair.Key == "first")
            .And.Contain(pair => pair.Key == "fourth");

            parser.SetActiveGoal(new Goal("X"));
            var nodesWithX = parser.EnumerateNamedNodesOf(doc.RootNode, "items");

            nodesWithX.Should()
            .NotBeNull()
            .And.HaveCount(3)
            .And.Contain(pair => pair.Key == "first")
            .And.Contain(pair => pair.Key == "third")
            .And.Contain(pair => pair.Key == "fourth");

            parser.SetActiveGoal(new Goal("Y"));
            var nodesWithY = parser.EnumerateNamedNodesOf(doc.RootNode, "items");

            nodesWithY.Should()
            .NotBeNull()
            .And.HaveCount(2)
            .And.Contain(pair => pair.Key == "first")
            .And.Contain(pair => pair.Key == "fourth");

            parser.SetActiveGoal(new Goal("Y", new[] { new Goal("X") }));
            var nodesWithXY = parser.EnumerateNamedNodesOf(doc.RootNode, "items");

            nodesWithXY.Should()
            .NotBeNull()
            .And.HaveCount(4)
            .And.Contain(pair => pair.Key == "first")
            .And.Contain(pair => pair.Key == "second")
            .And.Contain(pair => pair.Key == "third")
            .And.Contain(pair => pair.Key == "fourth");
        }