public CreatePathSegment ( System.Xml.Linq.XAttribute attribute ) : IPathSegment | ||
attribute | System.Xml.Linq.XAttribute | |
return | IPathSegment |
IPath BuildPath(Stack <Tuple <XElement, bool> > elementStack, XAttribute attribute, XElement root) { var path = new XmlPath(); path.ActualPath = string.Join(XmlPath.NodeSeperatorSymbol, elementStack.Reverse().Select(e => path.CreatePathSegment(e.Item1).ToString(e.Item2))); var displayPathSegments = elementStack.Reverse() .Select(p => new Tuple <IPathSegment, bool>(path.CreatePathSegment(p.Item1), p.Item2)) .ToList(); var recordsetEncountered = false; for (int i = displayPathSegments.Count - 1; i >= 0; i--) { var pathSegment = displayPathSegments[i]; if (recordsetEncountered) { pathSegment.Item1.IsEnumarable = false; } if (pathSegment.Item1.IsEnumarable && pathSegment.Item2) { recordsetEncountered = true; } } path.DisplayPath = string.Join(XmlPath.NodeSeperatorSymbol, displayPathSegments.Select(p => p.Item1.ToString(p.Item2))); if (path.ActualPath != string.Empty) { path.ActualPath += XmlPath.AttributeSeperatorSymbol; } if (path.DisplayPath != string.Empty) { path.DisplayPath += XmlPath.AttributeSeperatorSymbol; } path.ActualPath += path.CreatePathSegment(attribute).ToString(); path.DisplayPath += path.CreatePathSegment(attribute).ToString(); path.SampleData += GetSampleData(root, path); return(path); }
public void ToStringOnScalarSegmentt_WhereEnumerablesArentConsidered__Expected_ScalarFormat() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Name"); string expected = "Name"; string actual = segment.ToString(false); Assert.AreEqual(expected, actual); }
public void ToStringOnScalarSegment_Expected_ScalarFormat() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Name"); string expected = "Name"; string actual = segment.ToString(); Assert.AreEqual(expected, actual); }
public void ToStringOnEnumerableSegment_WhereEnumerablesAreConsidered_Expected_ScalarFormat() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Departments()"); string expected = "Departments()"; string actual = segment.ToString(true); Assert.AreEqual(expected, actual); }
public void ToStringOnEnumerableSegment_Expected_EnumerableFormat() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Departments()"); const string expected = "Departments()"; string actual = segment.ToString(); Assert.AreEqual(expected, actual); }
public void CreateScalarPathSegmentFromXElement_Expected_ScalarXmlPathSegment() { XElement element = new XElement("Departments"); XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment(element); const bool expected = false; bool actual = segment.IsEnumarable; Assert.AreEqual(expected, actual); }
public void CreateEnumerablePathSegmentFromXElement_Expected_EnumerableXmlPathSegment() { XElement element = new XElement("Departments", new XElement("Department"), new XElement("Department")); XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment(element); const bool expected = true; bool actual = segment.IsEnumarable; Assert.AreEqual(expected, actual); }
private IPath BuildPath(Stack<Tuple<XElement, bool>> elementStack, XAttribute attribute, XElement root) { var path = new XmlPath(); path.ActualPath = string.Join(XmlPath.NodeSeperatorSymbol, elementStack.Reverse().Select(e => path.CreatePathSegment(e.Item1).ToString(e.Item2))); List<Tuple<IPathSegment, bool>> displayPathSegments = elementStack.Reverse() .Select(p => new Tuple<IPathSegment, bool>(path.CreatePathSegment(p.Item1), p.Item2)) .ToList(); bool recordsetEncountered = false; for (int i = displayPathSegments.Count - 1; i >= 0; i--) { Tuple<IPathSegment, bool> pathSegment = displayPathSegments[i]; if (recordsetEncountered) { pathSegment.Item1.IsEnumarable = false; } if (pathSegment.Item1.IsEnumarable && pathSegment.Item2) recordsetEncountered = true; } path.DisplayPath = string.Join(XmlPath.NodeSeperatorSymbol, displayPathSegments.Select(p => p.Item1.ToString(p.Item2))); if (path.ActualPath != string.Empty) { path.ActualPath += XmlPath.AttributeSeperatorSymbol; } if (path.DisplayPath != string.Empty) { path.DisplayPath += XmlPath.AttributeSeperatorSymbol; } path.ActualPath += path.CreatePathSegment(attribute).ToString(); path.DisplayPath += path.CreatePathSegment(attribute).ToString(); path.SampleData += GetSampleData(root, path); return path; }
public void CreateScalarPathSegmentFromSegmentText_Expected_ScalarXmlPathSegment() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Name"); const bool expected = false; bool actual = segment.IsEnumarable; Assert.AreEqual(expected, actual); }
public void CreateEnumerablePathSegmentFromSegmentText_Expected_EnumerableXmlPathSegment() { XmlPath path = new XmlPath(); IPathSegment segment = path.CreatePathSegment("Departments()"); const bool expected = true; bool actual = segment.IsEnumarable; Assert.AreEqual(expected, actual); }