public void Should_not_perform_lookup_multiple_times_for_the_same_value() { var xml = XElement.Parse( "<Container>" + "<AReference><ALookup><Value>A</Value></ALookup></AReference>" + "<BReference><BLookup>" + "<AReference><ALookup><Value>A</Value></ALookup></AReference>" + "</BLookup></BReference>" + "</Container>"); var xwip = new XmlToWorkItemsProcessor(); var items = xwip.GetLookupWorkItems(new XmlTextReader(new StringReader(xml.ToString()))).ToList(); var hashIdentities = new Dictionary <string, XElement>(); foreach (var xmlLookupWorkItem in items) { foreach (var lookupPipelineStep in Pipeline(hashIdentities)) { lookupPipelineStep.Process(xmlLookupWorkItem); } } foreach (var wi in items) { Console.WriteLine(wi.HashString); Console.WriteLine(wi.LookupXElement); Console.WriteLine(wi.IdentityXElement); } Assert.AreEqual(3, items.Count); Assert.AreEqual(2, hashIdentities.Count); }
public XmlLookupApplication( IXmlPairsFactory pairsFactory, XmlToWorkItemsProcessor xmlToWorkItemsProcessor, XmlLookupPipelineProcessor xmlLookupPipelineProcessor, XmlLookupToResourceProcessor xmlLookupToResourceProcessor) { _pairsFactory = pairsFactory; _xmlToWorkItemsProcessor = xmlToWorkItemsProcessor; _xmlLookupPipelineProcessor = xmlLookupPipelineProcessor; _xmlLookupToResourceProcessor = xmlLookupToResourceProcessor; }
private XmlLookupWorkItem[] TestWorkItems(XElement xElement) { var processor = new XmlToWorkItemsProcessor(); var stream = new MemoryStream(Encoding.UTF8.GetBytes(xElement.ToString())); var reader = new XmlTextReader(stream); var workItems = processor.GetLookupWorkItems(reader).ToArray(); foreach (var xmlLookupWorkItem in workItems) { Console.WriteLine(xmlLookupWorkItem.LookupXElement); } return(workItems); }