/// <summary> /// Gets the contents of a document as a serialized string. /// </summary> /// <param name="document">The document whose contents to get.</param> /// <param name="indentChars">Characters to use to indent the serialized document for readability.</param> /// <returns>The string representation of the serialized document.</returns> public static string GetDocumentContents(XliffDocument document, string indentChars) { using (MemoryStream stream = new MemoryStream()) { StreamReader reader; XliffWriter writer; if (indentChars == null) { writer = new XliffWriter(); } else { XliffWriterSettings settings; settings = new XliffWriterSettings(); settings.Indent = true; settings.IndentChars = (indentChars == string.Empty) ? " " : indentChars; writer = new XliffWriter(settings); } writer.Serialize(stream, document); stream.Seek(0, SeekOrigin.Begin); reader = new StreamReader(stream); return(reader.ReadToEnd()); } }
public XliffDocument ExecuteExtraction(XliffDocument document) { var units = document.CollapseChildren <Unit>(); foreach (var unit in units) { var originalData = new OriginalData(); foreach (var resource in unit.Resources) { var segment = resource as Segment; if (segment != null) { var cdata = segment.Source.Text[0] as CDataTag; if (cdata == null) { continue; } var html = cdata.Text; var inlineCodeExtraction = html.ConvertHtmlTagsInInLineCodes(); foreach (var data in inlineCodeExtraction.OriginalData) { originalData.AddData(data.Value, data.Key); } segment.Source.Text.Clear(); segment.Source.Text.AddAll(inlineCodeExtraction.Text); } } if (originalData.HasData) { unit.OriginalData = originalData; } } return(document); }
public void TargetWithPhGetConvertedToCDataWithBrHtmlTag() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" trgLang=""it-IT"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1""> <segment> <source>Hello <ph id=""1"" subType=""xlf:lb"" type=""fmt""/>World!</source> <target>Hello <ph id=""1"" subType=""xlf:lb"" type=""fmt""/>World!</target> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var inlineprocessing = new InlineCodeProcessing(); var newDocument = inlineprocessing.ExecuteMerge(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var unit = newDocument.Files[0].Containers[0] as Unit; Assert.AreEqual(1, unit.CollapseChildren <Target>()[0].Text.Count); var segment = unit.CollapseChildren <Target>()[0].Text[0] as CDataTag; Assert.IsNotNull(segment); Assert.AreEqual("Hello <br/>World!", segment.Text); }
/// <summary> /// Demonstrates how to validate a document on write and display the data where the validation error occurred. /// </summary> /// <param name="document">The document to validate.</param> /// <param name="file">The path to write the document to.</param> public static void ViewValidations(XliffDocument document, string file) { using (IO.FileStream stream = new IO.FileStream(file, IO.FileMode.Create, IO.FileAccess.Write)) { XliffWriter writer; writer = new XliffWriter(); try { writer.Serialize(stream, document); } catch (ValidationException e) { Console.WriteLine("ValidationException Details:"); if (e.Data != null) { foreach (object key in e.Data.Keys) { Console.WriteLine(" '{0}': '{1}'", key, e.Data[key]); } } } } }
public void SingleParagraphCDataWithoutFormattigIsLeftUntouched() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1""> <segment> <source><![CDATA[Hello World!]]></source> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var inlineprocessing = new InlineCodeProcessing(); var newDocument = inlineprocessing.ExecuteExtraction(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var unit = newDocument.Files[0].Containers[0] as Unit; Assert.IsNull(unit.OriginalData); Assert.AreEqual(1, unit.CollapseChildren <Source>()[0].Text.Count); var segment = unit.CollapseChildren <Source>()[0].Text[0] as PlainText; Assert.IsNotNull(segment); Assert.AreEqual("Hello World!", segment.Text); }
public void SingleHtmlParagraphUnitIsWrappedIntoGroup() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1"" name=""body""> <segment> <source><![CDATA[<p>Hello Word!</p>]]></source> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var splitter = new ParagraphSplitter(_htmlParser); var newDocument = splitter.ExecuteExtraction(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var group = newDocument.Files[0].Containers[0] as Group; Assert.IsNotNull(group); Assert.AreEqual("body", group.Name); Assert.AreEqual(1, group.Containers.Count); var unit = group.Containers[0] as Unit; Assert.AreEqual("html:p", unit.Type); Assert.AreEqual("Hello Word!", unit.Resources[0].Source.Text[0].ToString()); }
public void MergerCreatesABundleWithTwoDocsIfXliffHastwoFiles() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-US"" trgLang=""it-IT"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1"" name=""title""> <segment> <source>content</source> <target>contenuto tradotto</target> </segment> </unit> </file> <file id=""f2""> <unit id=""u2"" name=""title""> <segment> <source>content</source> <target>contenuto tradotto</target> </segment> </unit> </file> </xliff>"; XliffDocument doc = Merger.Read(xliff); IMergerToSource merger = new MergerToBundle(); merger.Merge(doc); var bundle = merger.Output as Bundle; Assert.AreEqual(2, bundle.Documents.Count); }
public static void WhiteSpaces() { string data = "<xliff srcLang='en' version='2.0' xmlns='urn:oasis:names:tc:xliff:document:2.0'>" + "<file id='f1'><unit id='u1'>" + "<segment><source>Sentence 1.</source></segment>" + "<ignorable><source> </source></ignorable>" + "<segment><source>Sentence 2.</source></segment>" + "</unit></file></xliff>"; using (IO.MemoryStream ms = new IO.MemoryStream(Encoding.UTF8.GetBytes(data))) { XliffReader reader = new XliffReader(); XliffDocument doc = reader.Deserialize(ms); foreach (XliffElement e in doc.CollapseChildren <XliffElement>()) { Console.WriteLine("Type: " + e.GetType().ToString()); if (e is PlainText) { PlainText pt = (PlainText)e; Console.WriteLine("Content: '" + pt.Text + "'"); } } } Console.ReadKey(); }
public void ParentAttachedList_GetEnumerator() { IEnumerator <XliffDocument> enumerator; XliffDocument item; // // Test with empty list. // enumerator = this._list.GetEnumerator(); Assert.IsNotNull(enumerator, "Enumerator is null."); Assert.IsFalse(enumerator.MoveNext(), "Enumerator should be empty."); // // Test with multiple items. // item = new XliffDocument(); this._list.Add(item); item = new XliffDocument(); this._list.Add(item); enumerator = this._list.GetEnumerator(); Assert.IsNotNull(enumerator, "Enumerator is null."); Assert.IsTrue(enumerator.MoveNext(), "Enumerator should not be empty."); Assert.IsTrue(enumerator.MoveNext(), "Enumerator should not be empty."); Assert.AreSame(item, enumerator.Current, "Enumerator item is incorrect."); Assert.IsFalse(enumerator.MoveNext(), "Enumerator should be empty."); }
public void DefaultValue_File() { File file; XliffDocument document; file = new File("id"); document = new XliffDocument(); document.Space = Preservation.Preserve; document.Files.Add(file); Assert.IsTrue(file.CanResegment, "CanResegment is incorrect."); Assert.AreEqual(0, file.Containers.Count, "Containers count is incorrect."); Assert.IsFalse(file.HasNotes, "HasNotes is incorrect."); Assert.AreEqual("id", file.Id, "Id is incorrect."); Assert.AreEqual(0, file.Notes.Count, "Notes count is incorrect."); Assert.IsNull(file.Original, "Original is incorrect."); Assert.IsNull(file.Skeleton, "Skeleton is incorrect."); Assert.AreEqual(ContentDirectionality.Auto, file.SourceDirectionality, "SourceDirectionality is incorrect."); Assert.AreEqual(Preservation.Preserve, file.Space, "Space is incorrect"); Assert.AreEqual(ContentDirectionality.Auto, file.TargetDirectionality, "TargetDirectionality is incorrect."); Assert.IsTrue(file.Translate, "Translate is incorrect."); }
public void SingleParagraphPlainTextUnitIsLeftUntouched() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" trgLang=""it-IT"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1""> <segment> <source>Hello World!</source> <target>Hello World!</target> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var inlineprocessing = new InlineCodeProcessing(); var newDocument = inlineprocessing.ExecuteMerge(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var unit = newDocument.Files[0].Containers[0] as Unit; Assert.AreEqual(1, unit.CollapseChildren <Target>()[0].Text.Count); var segment = unit.CollapseChildren <Target>()[0].Text[0] as PlainText; Assert.IsNotNull(segment); Assert.AreEqual("Hello World!", segment.Text); }
public void SingleParagraphHtmlUnitIsWrappedInP() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" trgLang=""it-IT"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <group id=""u1-g"" name=""original""> <unit id=""u1-1"" name=""p""> <segment> <source>Hello Word!</source> <target>Hello Word!</target> </segment> </unit> </group> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var splitter = new ParagraphSplitter(); var newDocument = splitter.ExecuteMerge(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var unit = newDocument.Files[0].Containers[0] as Unit; Assert.IsNotNull(unit); Assert.AreEqual("u1", unit.Id); Assert.AreEqual("original", unit.Name); Assert.AreEqual(1, unit.Resources[0].Target.Text.Count); var text = unit.Resources[0].Target.Text[0] as CDataTag; Assert.IsNotNull(text); Assert.AreEqual("<p>Hello Word!</p>", text.Text); }
private XliffDocument Extract(Bundle xliff, string sourceLanguage, string targetLanguage) { var document = new XliffDocument(sourceLanguage); document.TargetLanguage = targetLanguage; var idCounter = new IdCounter(); foreach (var doc in xliff.Documents) { var fileId = "f" + (idCounter.GetNextFileId()); var xliffFile = new File(fileId); xliffFile.Original = doc.SourceIdentifier; if (doc.Attributes.Count > 0) { xliffFile.Metadata = doc.Attributes.ToXliffMetadata(); } foreach (var container in doc.Containers) { var xliffContainer = container.ToXliff(idCounter); xliffFile.Containers.Add(xliffContainer); } document.Files.Add(xliffFile); } return(document); }
public void ParentAttachedList_RemoveAt() { XliffDocument item1; XliffDocument item2; // // Test with empty list. // try { this._list.RemoveAt(0); Assert.Fail("Expected ArgumentOutOfRangeException to be thrown."); } catch (ArgumentOutOfRangeException) { } // // Test with negative value. // item1 = new XliffDocument(); this._list.Add(item1); try { this._list.RemoveAt(-1); Assert.Fail("Expected ArgumentOutOfRangeException to be thrown."); } catch (ArgumentOutOfRangeException) { } // // Test with invalid index. // try { this._list.RemoveAt(this._list.Count); Assert.Fail("Expected ArgumentOutOfRangeException to be thrown."); } catch (ArgumentOutOfRangeException) { } // // Test with valid index. // item2 = new XliffDocument(); this._list.Add(item2); this._list.RemoveAt(0); Assert.AreEqual(1, this._list.Count, "Count is incorrect."); Assert.AreSame(this._list[0], item2, "List was incorrectly modified."); Assert.IsNull(item1.Parent, "Parent was not reset."); Assert.IsNotNull(item2.Parent, "Parent was reset incorrectly."); }
public void ClassAttributeInsideNestedHtmlElementIsStoredInXliff() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1"" name=""original""> <segment> <source><![CDATA[<ul><li class=""even"">Hello Word1!</li></ul>]]></source> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var splitter = new ParagraphSplitter(_htmlParser); var newDocument = splitter.ExecuteExtraction(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var group = newDocument.Files[0].Containers[0] as Group; Assert.IsNotNull(group, "Didn't get a Group, but a {0}", newDocument.Files[0].Containers[0].GetType().Name); Assert.AreEqual("u1-g", group.Id); Assert.AreEqual("original", group.Name); Assert.AreEqual(1, group.Containers.Count); var ulGroup = group.Containers[0] as Group; Assert.AreEqual("html:ul", ulGroup.Type); Assert.AreEqual(1, ulGroup.Containers.Count); Assert.IsNull(ulGroup.Metadata); var unit1 = ulGroup.Containers[0] as Unit; var textUnit1 = unit1.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:li", unit1.Type); Assert.AreEqual("Hello Word1!", textUnit1); if (!_htmlParser.SupportsAttributes) { return; } Assert.IsNotNull(unit1.Metadata); Assert.AreEqual(1, unit1.Metadata.Groups.Count); var originalAttributesGroup = unit1.Metadata.Groups[0]; Assert.AreEqual("originalAttributes", originalAttributesGroup.Id); Assert.AreEqual(1, originalAttributesGroup.Containers.Count); var classAttribute = originalAttributesGroup.Containers[0] as Meta; Assert.AreEqual("class", classAttribute.Type); Assert.AreEqual("even", classAttribute.NonTranslatableText); }
public Bundle Merge(XliffDocument document) { foreach (var step in ProcessingSteps) { document = step.ExecuteMerge(document); } SourceMerger.Merge(document); return(SourceMerger.Output); }
internal ExportResult Export(ICollection <LocalizationResource> resources, CultureInfo fromLanguage, CultureInfo toLanguage) { if (resources == null) { throw new ArgumentNullException(nameof(resources)); } if (fromLanguage == null) { throw new ArgumentNullException(nameof(fromLanguage)); } if (toLanguage == null) { throw new ArgumentNullException(nameof(toLanguage)); } var doc = new XliffDocument(fromLanguage.Name) { TargetLanguage = toLanguage.Name }; var file = new File("f1"); doc.Files.Add(file); var unit = new Unit("u1"); file.Containers.Add(unit); foreach (var resource in resources) { var segment = new Segment(XmlConvert.EncodeNmToken(resource.ResourceKey)) { Source = new Source(), Target = new Target() }; segment.Source.Text.Add(new CDataTag(resource.Translations.ByLanguage(fromLanguage.Name, false))); segment.Target.Text.Add(new CDataTag(resource.Translations.ByLanguage(toLanguage.Name, false))); unit.Resources.Add(segment); } var dest = new MemoryStream(); var settings = new XliffWriterSettings(); settings.Validators.Clear(); var writer = new XliffWriter(settings); writer.Serialize(dest, doc); dest.Position = 0; var reader = new StreamReader(dest); return(new ExportResult(reader.ReadToEnd(), "application/x-xliff+xml", $"{fromLanguage.Name}-{toLanguage.Name}-{DateTime.UtcNow:yyyyMMdd}.xliff")); }
public void Merge(XliffDocument xliff) { Output = new Bundle(); TargetLanguage = xliff.TargetLanguage; foreach (var file in xliff.Files) { Output.Documents.Add(Document.FromXliff(file)); } }
/// <summary> /// Demonstrates how to write an XLIFF document to a file. /// </summary> /// <param name="document">The document to write.</param> /// <param name="file">The path to write the document to.</param> public static void WriteDocument(XliffDocument document, string file) { using (IO.FileStream stream = new IO.FileStream(file, IO.FileMode.Create, IO.FileAccess.Write)) { XliffWriter writer; writer = new XliffWriter(); writer.Serialize(stream, document); } }
public void MergerGetsTargetLanguage() { IMergerToSource merger = new MergerToBundle(); XliffDocument doc = new XliffDocument("en-US"); doc.TargetLanguage = "it-IT"; merger.Merge(doc); Assert.AreEqual("it-IT", merger.TargetLanguage); }
public void UnorderedListWithoutFormattingPlusParagraphIsTransformedIntoGroupWithManyUnits() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <unit id=""u1""> <segment> <source><![CDATA[<p>Hello World!</p><ul><li>Hello Word1!</li><li>Hello Word2!</li><li>Hello Word3!</li></ul>]]></source> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var splitter = new ParagraphSplitter(_htmlParser); var newDocument = splitter.ExecuteExtraction(document); Assert.AreEqual(1, newDocument.Files[0].Containers.Count); var group = newDocument.Files[0].Containers[0] as Group; Assert.IsNotNull(group); Assert.AreEqual("u1-g", group.Id); Assert.AreEqual(2, group.Containers.Count); var pUnit = group.Containers[0] as Unit; var pUnitText = pUnit.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:p", pUnit.Type); Assert.AreEqual("Hello World!", pUnitText); var ulGroup = group.Containers[1] as Group; Assert.AreEqual("html:ul", ulGroup.Type); var unit1 = ulGroup.Containers[0] as Unit; var textUnit1 = unit1.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:li", unit1.Type); Assert.AreEqual("Hello Word1!", textUnit1); var unit2 = ulGroup.Containers[1] as Unit; var textUnit2 = unit2.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:li", unit2.Type); Assert.AreEqual("Hello Word2!", textUnit2); var unit3 = ulGroup.Containers[2] as Unit; var textUnit3 = unit3.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:li", unit3.Type); Assert.AreEqual("Hello Word3!", textUnit3); }
public XliffDocument ExecuteExtraction(XliffDocument document) { var units = document.CollapseChildren <Unit>(); foreach (var unit in units) { SplitUnitAndIterate(unit); } return(document); }
public void MergerCreatesABundle() { IMergerToSource merger = new MergerToBundle(); XliffDocument doc = new XliffDocument("en-US"); merger.Merge(doc); var bundle = merger.Output; Assert.IsNotNull(bundle); }
public void MergerCreatesABundle() { XliffDocument doc = SetupXliffFile(); IMergerToSource merger = new MergerToBundle(); merger.Merge(doc); var bundle = merger.Output as Bundle; Assert.IsNotNull(bundle); }
public void MergerCreatesBundleWithCorrectOriginal() { XliffDocument doc = SetupXliffFile(); IMergerToSource merger = new MergerToBundle(); merger.Merge(doc); var bundle = merger.Output as Bundle; Assert.AreEqual("cmsId", bundle.Documents[0].SourceIdentifier); }
public void MergerCreatesABundleWithOneDocIfXliffHasOneFile() { XliffDocument doc = SetupXliffFile(); IMergerToSource merger = new MergerToBundle(); merger.Merge(doc); var bundle = merger.Output as Bundle; Assert.AreEqual(1, bundle.Documents.Count); }
//Move to actual XliffReader private static XliffDocument LoadXliff(string xliff) { XliffDocument document = null; using (Stream stream = GenerateStreamFromString(xliff)) { var reader = new XliffReader(); document = reader.Deserialize(stream); } return(document); }
public void NestedUnitIsTransformedIntoGroupWithManyUnits() { var xliff = @"<?xml version=""1.0"" encoding=""utf-8""?> <xliff srcLang=""en-GB"" version=""2.0"" xmlns=""urn:oasis:names:tc:xliff:document:2.0""> <file id=""f1""> <group id=""g1"" name=""originalGroup""> <unit id=""u1"" name=""originalUnit""> <segment> <source><![CDATA[<p>Hello Word nested!</p><p>Hello Word2!</p>]]></source> </segment> </unit> </group> <unit id=""u2""> <segment> <source><![CDATA[<p>Hello Word!</p>]]></source> </segment> </unit> </file> </xliff>"; XliffDocument document = LoadXliff(xliff); var splitter = new ParagraphSplitter(_htmlParser); var newDocument = splitter.ExecuteExtraction(document); Assert.AreEqual(2, newDocument.Files[0].Containers.Count); var group = newDocument.Files[0].Containers[0] as Group; Assert.IsNotNull(group); Assert.AreEqual("g1", group.Id); Assert.AreEqual("originalGroup", group.Name); Assert.AreEqual(1, group.Containers.Count); var nestedGroup = group.Containers[0] as Group; Assert.IsNotNull(nestedGroup); Assert.AreEqual("originalUnit", nestedGroup.Name); Assert.AreEqual(2, nestedGroup.Containers.Count); var unit1 = nestedGroup.Containers[0] as Unit; var textUnit1 = unit1.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:p", unit1.Type); Assert.AreEqual("Hello Word nested!", textUnit1); var unit2 = nestedGroup.Containers[1] as Unit; var textUnit2 = unit2.Resources[0].Source.Text[0].ToString(); Assert.AreEqual("html:p", unit2.Type); Assert.AreEqual("Hello Word2!", textUnit2); }
public void DefaultValue_Document() { XliffDocument document; document = new XliffDocument("en-us"); Assert.AreEqual(0, document.Files.Count, "Files count is incorrect."); Assert.IsNull(document.Id, "Id is incorrect."); Assert.AreEqual("en-us", document.SourceLanguage, "SourceLanguage is incorrect."); Assert.AreEqual(Preservation.Default, document.Space, "Space is incorrect."); Assert.IsNull(document.TargetLanguage, "TargetLanguage is incorrect."); Assert.AreEqual("2.0", document.Version, "Version is incorrect."); }
public XliffDocument Extract(Bundle sourceDocument, string sourceLanguage, string targetLanguage) { SourceExtractor.Input = sourceDocument; XliffDocument document = SourceExtractor.Extract(sourceLanguage, targetLanguage); foreach (var step in ProcessingSteps) { document = step.ExecuteExtraction(document); } return(document); }
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"); }
public void XliffElement_SelectorPath() { MarkedSpan span; Group group; Unit unit; Segment segment; XliffDocument document; span = new MarkedSpan("mrk1"); segment = new Segment(); segment.Source = new Source(); segment.Source.Text.Add(span); unit = new Unit("u1"); unit.Resources.Add(segment); group = new Group("g1"); group.Containers.Add(unit); document = new XliffDocument(); document.Files.Add(new File("f1")); document.Files[0].Containers.Add(group); Console.WriteLine("Test for document."); Assert.AreEqual("#", document.SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test for file."); Assert.AreEqual("#/f=f1", document.Files[0].SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test for group."); Assert.AreEqual("#/f=f1/g=g1", group.SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test for unit."); Assert.AreEqual("#/f=f1/g=g1/u=u1", unit.SelectorPath, "SelectorPath is incorrect."); }
public void XliffElement_SelectorPath_Target() { MarkedSpan span; Group group; Unit unit; Segment segment; XliffDocument document; span = new MarkedSpan("mrk1"); segment = new Segment(); segment.Target = new Target(); segment.Target.Text.Add(span); unit = new Unit("u1"); unit.Resources.Add(segment); group = new Group("g1"); group.Containers.Add(unit); document = new XliffDocument(); document.Files.Add(new File("f1")); document.Files[0].Containers.Add(group); Console.WriteLine("Test with segment without Id."); Assert.AreEqual("#/f=f1/g=g1/u=u1/t=mrk1", span.SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test with all items with Id."); segment.Id = "s1"; Assert.AreEqual("#/f=f1/g=g1/u=u1/t=mrk1", span.SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test with tag without Id."); span.Id = null; Assert.AreEqual("#/f=f1/g=g1/u=u1/s1", span.SelectorPath, "SelectorPath is incorrect."); Console.WriteLine("Test with tag and segment without Id."); segment.Id = null; span.Id = null; Assert.AreEqual("#/f=f1/g=g1/u=u1", span.SelectorPath, "SelectorPath is incorrect."); }
public void XliffElement_CollapseChildren() { List<PlainText> textList; List<ResourceStringContent> tagList; List<Source> sourceList; List<Target> targetList; List<XliffElement> elementList; PlainText text; Segment segment; 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); elementList = document.CollapseChildren<XliffElement>(); 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"); sourceList = document.CollapseChildren<Source>(); Assert.AreEqual(1, sourceList.Count, "Element count is incorrect."); Assert.IsTrue(sourceList.Contains(segment.Source), "Source not found in list"); tagList = document.CollapseChildren<ResourceStringContent>(); Assert.AreEqual(2, tagList.Count, "Element count is incorrect."); Assert.IsTrue(tagList.Contains(code), "StandaloneCode not found in list"); Assert.IsTrue(tagList.Contains(text), "PlainText not found in list"); targetList = document.CollapseChildren<Target>(); Assert.AreEqual(0, targetList.Count, "Element count is incorrect."); textList = document.CollapseChildren<PlainText>(); Assert.AreEqual(1, textList.Count, "Element count is incorrect."); Assert.IsTrue(textList.Contains(text), "PlainText not found in list"); }
public void TestInitialize() { this._element = new XliffDocument("source"); this._provider = this._element; }