/// <summary> /// Stores the element in an extension. /// </summary> /// <param name="extensible">The object that is being extended.</param> /// <param name="element">The element to store.</param> /// <returns>This method always returns true.</returns> public bool StoreElement(IExtensible extensible, ElementInfo element) { CustomExtension extension; extension = extensible.Extensions.FirstOrDefault((e) => e.Name == this.ns) as CustomExtension; if (extension == null) { extension = new CustomExtension(this.ns); extensible.Extensions.Add(extension); } extension.AddChild(element); return(true); }
/// <summary> /// Stores the attribute in an extension. /// </summary> /// <param name="extensible">The object that is being extended.</param> /// <param name="attribute">The attribute to store.</param> /// <returns>This method always returns true.</returns> public bool StoreAttribute(IExtensible extensible, IExtensionAttribute attribute) { CustomExtension extension; extension = extensible.Extensions.FirstOrDefault((e) => e.Name == this.ns) as CustomExtension; if (extension == null) { extension = new CustomExtension(this.ns); extensible.Extensions.Add(extension); } extension.AddAttribute(attribute); return(true); }
public void XliffElement_CollapseChildrenWithScope() { IExtensible extensible; CustomExtension extension1; CustomExtension extension2; CustomElement1 element1; CustomElement2 element2; List<XliffElement> elementList; List<Source> sourceList; PlainText text; Segment segment; Source source; StandaloneCode code; Unit unit; XliffDocument document; code = new StandaloneCode(); text = new PlainText(); segment = new Segment(); segment.Source = new Source(); segment.Source.Text.Add(text); segment.Source.Text.Add(code); unit = new Unit(); unit.Resources.Add(segment); document = new XliffDocument(); document.Files.Add(new File()); document.Files[0].Containers.Add(unit); extensible = document.Files[0]; extension1 = new CustomExtension("namespace"); element1 = new CustomElement1("pre1", "namespace"); extension1.AddChild(new ElementInfo(new XmlNameInfo("localname"), element1)); extensible.Extensions.Add(extension1); extension2 = new CustomExtension("namespace"); element2 = new CustomElement2("pre1", "namespace"); extension2.AddChild(new ElementInfo(new XmlNameInfo("localname"), element2)); source = new Source(); extension2.AddChild(new ElementInfo(new XmlNameInfo("localname"), source)); extensible.Extensions.Add(extension2); Console.WriteLine("Test with none."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.None); Assert.AreEqual(0, elementList.Count, "Element count is incorrect."); Console.WriteLine("Test with current element."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.CurrentElement); Assert.AreEqual(1, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(document), "Document not found in list"); Console.WriteLine("Test with default."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.Default); Assert.AreEqual(6, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list"); Assert.IsFalse(elementList.Contains(document), "Document not found in list"); Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list"); Assert.IsTrue(elementList.Contains(segment), "Segment not found in list"); Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list"); Assert.IsTrue(elementList.Contains(text), "PlainText not found in list"); Assert.IsTrue(elementList.Contains(unit), "Unit not found in list"); Console.WriteLine("Test with default with current element."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.Default | CollapseScope.CurrentElement); Assert.AreEqual(7, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(document), "Document not found in list"); Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list"); Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list"); Assert.IsTrue(elementList.Contains(segment), "Segment not found in list"); Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list"); Assert.IsTrue(elementList.Contains(text), "PlainText not found in list"); Assert.IsTrue(elementList.Contains(unit), "Unit not found in list"); elementList = document.CollapseChildren<XliffElement>(CollapseScope.Extensions | CollapseScope.CoreElements | CollapseScope.AllDescendants); Assert.AreEqual(9, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list"); Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list"); Assert.IsTrue(elementList.Contains(segment), "Segment not found in list"); Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list"); Assert.IsTrue(elementList.Contains(text), "PlainText not found in list"); Assert.IsTrue(elementList.Contains(unit), "Unit not found in list"); Assert.IsTrue(elementList.Contains(source), "Source not found in list"); Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list"); Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list"); sourceList = document.CollapseChildren<Source>(CollapseScope.Extensions | CollapseScope.CoreElements | CollapseScope.AllDescendants); Assert.AreEqual(2, sourceList.Count, "Element count is incorrect."); Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list"); Assert.IsTrue(sourceList.Contains(source), "Source not found in list"); elementList = document.CollapseChildren<XliffElement>(CollapseScope.All); Assert.AreEqual(10, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(document), "Document not found in list"); Assert.IsTrue(elementList.Contains(code), "StandaloneCode not found in list"); Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list"); Assert.IsTrue(elementList.Contains(segment), "Segment not found in list"); Assert.IsTrue(elementList.Contains(segment.Source), "Source not found in list"); Assert.IsTrue(elementList.Contains(text), "PlainText not found in list"); Assert.IsTrue(elementList.Contains(unit), "Unit not found in list"); Assert.IsTrue(elementList.Contains(source), "Source not found in list"); Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list"); Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list"); sourceList = document.CollapseChildren<Source>(CollapseScope.All); Assert.AreEqual(2, sourceList.Count, "Element count is incorrect."); Assert.IsTrue(sourceList.Contains(source), "Source not found in list"); Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list"); Console.WriteLine("Test with extensions with core elements for Source."); sourceList = document.CollapseChildren<Source>(CollapseScope.Extensions | CollapseScope.AllDescendants); Assert.AreEqual(1, sourceList.Count, "Element count is incorrect."); Assert.IsTrue(sourceList.Contains(source), "Source not found in list"); Console.WriteLine("Test with extensions without core elements."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.Extensions | CollapseScope.AllDescendants); Assert.AreEqual(3, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(element1), "Element1 not found in list"); Assert.IsTrue(elementList.Contains(element2), "Element2 not found in list"); Assert.IsTrue(elementList.Contains(source), "Source not found in list"); elementList = document.CollapseChildren<XliffElement>(CollapseScope.TopLevelDescendants); Assert.AreEqual(0, elementList.Count, "Element count is incorrect."); elementList = document.CollapseChildren<XliffElement>(CollapseScope.TopLevelDescendants | CollapseScope.CoreElements); Assert.AreEqual(1, elementList.Count, "Element count is incorrect."); Assert.IsTrue(elementList.Contains(document.Files[0]), "File not found in list"); }