internal XPathWorkbench(XmlRepository repository, SearchResultFactory searchResultFactory)
 {
     InitializeComponent();
     _repository = repository;
     _searchResultFactory = searchResultFactory;
     SearchResults = new ObservableCollection<SearchResult>();
 }
        public void HandlesNullGracefully()
        {
            // Arrange
            var factory = new SearchResultFactory();

            // Act
            var results = factory.Parse(null);

            // Assert
            Assert.That(results, Is.Not.Null.And.Empty);
        }
        public void ParsesXPathWhichEvaluatesToElements()
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml).XPathEvaluate("/child");

            // Act
            var results = factory.Parse(evaluationResult);

            // Assert
            Assert.That(results, Is.Not.Null.And.Not.Empty);
        }
        public void ParsesXPathWhichEvaluatesToBoolean()
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml).XPathEvaluate("count(/child/@name) > 0");

            // Act
            var result = factory.Parse(evaluationResult).Single();

            // Assert
            Assert.That(result.Value, Is.EqualTo(bool.TrueString));
        }
        public void ParsesXPathWhichEvaluatesToAttribute()
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml).XPathEvaluate("/child/@name");
            var expectedAttributeValues = new[]
                                          {
                                              "name=\"first\"",
                                              "name=\"second\""
                                          };
            // Act
            var results = factory.Parse(evaluationResult).Select(s => s.Value).ToArray();

            // Assert
            Assert.That(results, Is.EquivalentTo(expectedAttributeValues));
        }
        public void ParsesXPathWhichEvaluatesToString()
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml).XPathEvaluate("/child/text()");
            var expectedTextValues = new[]
                                     {
                                         "Hello World!",
                                         "Guten Morgen Welt!"
                                     };

            // Act
            var results = factory.Parse(evaluationResult).Select(s => s.Value).ToArray();

            // Assert
            Assert.That(results, Is.EqualTo(expectedTextValues));
        }
        public void SetsSelectionLength(string xpath, int expectedLength)
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml, LoadOptions.SetLineInfo).XPathEvaluate(xpath);

            // Act
            var result = factory.Parse(evaluationResult).Single();

            // Assert
            Assert.That(result.SelectionLength, Is.EqualTo(expectedLength));
        }
        public void SetsLinePosition(string xpath, int linePosition)
        {
            // Arrange
            var factory = new SearchResultFactory();
            var evaluationResult = XElement.Parse(Xml, LoadOptions.SetLineInfo).XPathEvaluate(xpath);

            // Act
            var result = factory.Parse(evaluationResult).Single();

            // Assert
            Assert.That(result.LinePosition, Is.EqualTo(linePosition));
        }