Пример #1
0
        public void Read_Crafted_00a()
        {
            var path   = Path.Combine(IDIR, "Crafted00a.xliff");
            var bundle = new XliffReader().Read(path);

            bundle.Assets.Count().Is(1);
            {
                var a = bundle.Assets.ElementAt(0);
                a.Package.Is(path);
                a.Original.Is("Crafted00a");
                a.SourceLang.Is("en-US");
                a.TargetLang.Is("x-xyz");
                a.TransPairs.Count().Is(1);
                a.AltPairs.Count().Is(0);
                a.Properties.Count().Is(0);
                {
                    var p = a.TransPairs.ElementAt(0);
                    p.Serial.Is(1);
                    p.Id.Is("1");
                    p.Source.ToString().Is("");
                    p.Target.ToString().Is("");
                    p.SourceLang.Is("en-US");
                    p.TargetLang.Is("x-xyz");
                    p.Notes?.Count().Is(0);
                }
            }
        }
Пример #2
0
        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();
        }
Пример #3
0
        public void Read_Crafted_01()
        {
            var path   = Path.Combine(IDIR, "Crafted01.xliff");
            var bundle = new XliffReader().Read(path);

            bundle.Assets.Count().Is(1);
            {
                var a = bundle.Assets.ElementAt(0);
                a.TransPairs.Count().Is(2);
                {
                    var p = a.TransPairs.ElementAt(0);
                    p.Serial.Is(1);
                    p.Id.Is("101");
                    p.Source.ToString().Is("Simple Text");
                    p.Target.ToString().Is("Simple Text");
                    p.SourceLang.Is("en-US");
                    p.TargetLang.Is("x-xyz");
                    p.Notes?.Count().Is(0);
                }
                {
                    var p = a.TransPairs.ElementAt(1);
                    p.Serial.Is(2);
                    p.Id.Is("102");
                    p.Source.ToString().Is("abc def ghi.");
                    p.Target.ToString().Is("ABC DEF GHI.");
                    p.SourceLang.Is("en-US");
                    p.TargetLang.Is("x-xyz");
                    p.Notes?.Count().Is(0);
                }
            }
        }
        public void TestInitialize()
        {
            XliffReaderSettings settings;

            this._document = new XliffDocument();

            settings = new XliffReaderSettings();
            settings.Validators.Clear();
            this._reader = new XliffReader(settings);
        }
Пример #5
0
        /// <summary>
        /// Demonstrates how to read an XLIFF document from a file.
        /// </summary>
        /// <param name="file">The path to the document to read.</param>
        public static void ReadDocument(string file)
        {
            using (IO.FileStream stream = new IO.FileStream(file, IO.FileMode.Open, IO.FileAccess.Read))
            {
                XliffDocument document;
                XliffReader   reader;

                reader   = new XliffReader();
                document = reader.Deserialize(stream);
            }
        }
        //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);
        }
Пример #7
0
        public void XliffWriter_InvalidSegmentId()
        {
            var unit    = new Unit("u1");
            var segment = new Segment(XmlConvert.EncodeNmToken("/this/is/legacy/id"))
            {
                Source = new Source(),
                Target = new Target()
            };

            segment.Source.Text.Add(new CDataTag("from-source"));
            segment.Target.Text.Add(new CDataTag("to-target"));

            unit.Resources.Add(segment);

            var segment2 = new Segment(XmlConvert.EncodeNmToken("this+is+nested"))
            {
                Source = new Source(),
                Target = new Target()
            };

            segment2.Source.Text.Add(new CDataTag("from-source-nested"));
            segment2.Target.Text.Add(new CDataTag("to-target-nested"));

            unit.Resources.Add(segment2);

            var segment3 = new Segment(XmlConvert.EncodeNmToken("this.is.normal.id"))
            {
                Source = new Source(),
                Target = new Target()
            };

            segment3.Source.Text.Add(new CDataTag("from-source-normal"));
            segment3.Target.Text.Add(new CDataTag("to-target-normal"));

            unit.Resources.Add(segment3);

            _document.Files.Add(new File("f1"));
            _document.Files[0].Containers.Add(unit);

            var actualValue = Serialize();

            var reader = new XliffReader();
            var doc    = reader.Deserialize(AsStream(actualValue));

            var resources = doc.Files[0].Containers.OfType <Unit>().First().Resources;

            Assert.NotNull(resources.FirstOrDefault(r => XmlConvert.DecodeName(r.Id) == "this+is+nested"));
            Assert.NotNull(resources.FirstOrDefault(r => XmlConvert.DecodeName(r.Id) == "/this/is/legacy/id"));
            Assert.NotNull(resources.FirstOrDefault(r => XmlConvert.DecodeName(r.Id) == "this.is.normal.id"));
        }
Пример #8
0
        public void Read_Basic_Xliff2()
        {
            var path   = Path.Combine(IDIR, "Xliff2.xliff");
            var bundle = new XliffReader().Read(path, -1);

            bundle.Assets.Count().Is(1);

            var asset0 = bundle.Assets.ElementAt(0);

            asset0.Package.Is(path);
            asset0.Original.Is(@"v12/messages.xml");
            asset0.SourceLang.Is("en-US");
            asset0.TargetLang.Is("fr-FR");
            asset0.TransPairs.Count().Is(7);
            asset0.AltPairs.Count().Is(2);
        }
Пример #9
0
        public void Read_Crafted_00()
        {
            var path   = Path.Combine(IDIR, "Crafted00.xliff");
            var bundle = new XliffReader().Read(path);

            bundle.Assets.Count().Is(1);
            {
                var a = bundle.Assets.ElementAt(0);
                a.Package.Is(path);
                a.Original.Is("Crafted00");
                a.SourceLang.Is("en-US");
                a.TargetLang.IsNull();
                a.TransPairs.Count().Is(0);
                a.AltPairs.Count().Is(0);
                a.Properties.Count().Is(0);
            }
        }
        public ParseResult Parse(string fileContent)
        {
            var reader = new XliffReader();
            var doc    = reader.Deserialize(AsStream(fileContent));

            var result    = new List <LocalizationResource>();
            var languages = new List <string>();

            foreach (var file in doc.Files)
            {
                foreach (var container in file.Containers.OfType <Unit>())
                {
                    foreach (var resource in container.Resources)
                    {
                        var targetLanguage = resource.Target.Language;
                        var targetCulture  = new CultureInfo(targetLanguage).Name;

                        var newResource = new LocalizationResource(XmlConvert.DecodeName(resource.Id), false);
                        newResource.Translations.AddRange(new List <LocalizationResourceTranslation>
                        {
                            new LocalizationResourceTranslation
                            {
                                Language = targetCulture,
                                Value    = resource.Target.Text.OfType <CDataTag>()
                                           .FirstOrDefault()
                                           ?.Text
                            }
                        });

                        result.Add(newResource);

                        if (!languages.Contains(targetCulture))
                        {
                            languages.Add(targetCulture);
                        }
                    }
                }
            }

            return(new ParseResult(result, languages.Select(l => new CultureInfo(l)).ToList()));
        }
Пример #11
0
        public void Read_Basic_Xliff1()
        {
            var path   = Path.Combine(IDIR, "Xliff1.xliff");
            var bundle = new XliffReader().Read(path, -1);

            bundle.Assets.Count().Is(1);

            var asset0 = bundle.Assets.ElementAt(0);

            asset0.Package.Is(path);
            asset0.Original.Is(@"Graphic Example.psd");
            asset0.SourceLang.Is("en-US");
            asset0.TargetLang.Is("ja-JP");
            asset0.TransPairs.Count().Is(3);
            asset0.AltPairs.Count().Is(0);

            var pairs0 = asset0.TransPairs.ToArray();

            pairs0[0].Serial.Is(1);
            pairs0[0].Id.Is("1");
            pairs0[0].Source.ToString().Is("Quetzal");
            pairs0[0].Target.ToString().Is("Quetzal");
            pairs0[0].SourceLang.Is("en-US");
            pairs0[0].TargetLang.Is("ja-JP");

            pairs0[1].Serial.Is(2);
            pairs0[1].Id.Is("3");
            pairs0[1].Source.ToString().Is("An application to manipulate and process XLIFF documents");
            pairs0[1].Target.ToString().Is("XLIFF 文書を編集し処理するアプリケーション");
            pairs0[1].SourceLang.Is("en-US");
            pairs0[1].TargetLang.Is("ja-JP");

            pairs0[2].Serial.Is(3);
            pairs0[2].Id.Is("4");
            pairs0[2].Source.ToString().Is("XLIFF Data Manager");
            pairs0[2].Target.ToString().Is("XLIFF データ・マネージャ");
            pairs0[2].SourceLang.Is("en-US");
            pairs0[2].TargetLang.Is("ja-JP");
        }
Пример #12
0
        public ParseResult Parse(string fileContent)
        {
            var reader = new XliffReader();
            var doc    = reader.Deserialize(AsStream(fileContent));

            var result    = new List <LocalizationResource>();
            var languages = new List <string>();

            foreach (var file in doc.Files)
            {
                foreach (var container in file.Containers.OfType <Unit>())
                {
                    foreach (var resource in container.Resources)
                    {
                        // NOTE: some more modern resources cannot be imported as-is (nested classes)
                        // this might be a dependency on export comp. - knowing how substitution works over there, but yeah..
                        result.Add(new LocalizationResource(resource.Id.Replace("---", "+"))
                        {
                            Translations = new List <LocalizationResourceTranslation>
                            {
                                new LocalizationResourceTranslation
                                {
                                    Language = resource.Target.Language,
                                    Value    = resource.Target.Text.OfType <CDataTag>().FirstOrDefault()?.Text
                                }
                            }
                        });

                        if (!languages.Contains(resource.Target.Language))
                        {
                            languages.Add(resource.Target.Language);
                        }
                    }
                }
            }

            return(new ParseResult(result, languages.Select(l => new CultureInfo(l)).ToList()));
        }
Пример #13
0
        /// <summary>
        /// Deserializes a file and stores the resulting <see cref="XliffDocument"/> internally.
        /// </summary>
        /// <param name="data">The identifier of the document to deserialize.</param>
        /// <param name="validate">If true the document will be validated, otherwise it won't be validated.</param>
        /// <param name="handlers">The extension handlers to register.</param>
        /// <returns>The deserialized document.</returns>
        public static XliffDocument Deserialize(TestData data, bool validate, Dictionary <string, IExtensionHandler> handlers)
        {
            XliffDocument result;
            XliffReader   reader;
            string        path;

            if (validate)
            {
                reader = new XliffReader();
            }
            else
            {
                XliffReaderSettings settings;

                settings = new XliffReaderSettings();
                settings.Validators.Clear();
                reader = new XliffReader(settings);
            }

            path = Path.Combine(Environment.CurrentDirectory, TestUtilities.TestDataDirectory, data.ToString() + ".xlf");
            using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
            {
                if (handlers != null)
                {
                    foreach (string ns in handlers.Keys)
                    {
                        reader.RegisterExtensionHandler(ns, handlers[ns]);
                    }
                }

                result = reader.Deserialize(stream);
            }

            Assert.IsNotNull(result, "Failed to deserialize.");

            return(result);
        }
Пример #14
0
        public void GenerateFiles()
        {
            var xliff = new XliffReader();

#if false
            Dump(xliff, "Xliff1.xliff");
            Dump(xliff, "Xliff2.xliff");
            Dump(xliff, "git.html_jpn.mqxlz");
            Dump(xliff, "Configuring_Spelling_Checker.doc.sdlxliff");
            Dump(xliff, "Language_Support.doc.sdlxliff");
            Dump(xliff, "New_features.ppt.sdlxliff");
#endif

            var tmx = new TmxReader();
#if false
            Dump(tmx, "my_memory.tmx");
            Dump(tmx, "XuanZang.tmx");
#endif

            var sdltm = new SdltmReader();
#if false
            Dump(sdltm, "tea-party.sdltm");
#endif
        }
Пример #15
0
        public void Read_Crafted_03()
        {
            var path   = Path.Combine(IDIR, "Crafted03.xliff");
            var bundle = new XliffReader().Read(path);
            var a      = bundle.Assets.ElementAt(0);

            a.TransPairs.Count().Is(7);
            {
                var p = a.TransPairs.ElementAt(0);
                p.Id.Is("301");
                p.Source.DebuggerDisplay.Is("Reordering of tags: abc [CODE1]text1[/CODE1] def [CODE2]text2[/CODE2] ghi.");
                p.Target.DebuggerDisplay.Is("Reordering of tags: ABC [CODE2]TEXT2[/CODE2] DEF [CODE1]TEXT1[/CODE1] GHI.");
            }
            {
                var p = a.TransPairs.ElementAt(1);
                p.Id.Is("302");
                p.Source.DebuggerDisplay.Is("bpt/ept: abc {bpt;302.1}text1{ept;302.2} def {bpt;302.3}text2{ept;302.4} ghi.");
                p.Target.DebuggerDisplay.Is("bpt/ept: ABC {bpt;302.3}TEXT2{ept;302.4} DEF {bpt;302.1}TEXT1{ept;302.2} GHI.");
                VerifyTagOrderChanged(p);
            }
            {
                var p = a.TransPairs.ElementAt(2);
                p.Id.Is("303");
                p.Source.DebuggerDisplay.Is("bx/ex: abc {bx;303.1}text1{ex;303.2} def {bx;303.3}text1{ex;303.4} ghi.");
                p.Target.DebuggerDisplay.Is("bx/ex: ABC {bx;303.3}TEXT2{ex;303.4} DEF {bx;303.1}TEXT1{ex;303.2} GHI.");
                VerifyTagOrderChanged(p);
            }
            {
                var p = a.TransPairs.ElementAt(3);
                p.Serial.Is(4);
                p.Id.Is("304");
                p.Source.DebuggerDisplay.Is("g: abc {g;304.1}text1{g;304.1} def {g;304.2}text2{g;304.2} ghi.");
                p.Target.DebuggerDisplay.Is("g: ABC {g;304.2}TEXT2{g;304.2} DEF {g;304.1}TEXT1{g;304.1} GHI.");
                VerifyTagOrderChanged(p);
            }
            {
                var p = a.TransPairs.ElementAt(4);
                p.Serial.Is(5);
                p.Id.Is("305");
                p.Source.DebuggerDisplay.Is("ph: abc {ph;305.1}text1{ph;305.2} def {ph;305.3}text2{ph;305.4} ghi.");
                p.Target.DebuggerDisplay.Is("ph: ABC {ph;305.3}TEXT2{ph;305.4} DEF {ph;305.1}TEXT1{ph;305.2} GHI.");
                VerifyTagOrderChanged(p);
            }
            {
                var p = a.TransPairs.ElementAt(5);
                p.Serial.Is(6);
                p.Id.Is("306");
                p.Source.DebuggerDisplay.Is("x: abc {x;306.1}text1{x;306.2} def {x;306.3}text2{x;306.4} ghi.");
                p.Target.DebuggerDisplay.Is("x: ABC {x;306.3}TEXT2{x;306.4} DEF {x;306.1}TEXT1{x;306.2} GHI.");
                var s = p.Source.Tags.ToArray();
                var t = p.Target.Tags.ToArray();
                VerifyTagOrderChanged(p);
            }
            {
                var p = a.TransPairs.ElementAt(6);
                p.Serial.Is(7);
                p.Id.Is("307");
                p.Source.DebuggerDisplay.Is("it: abc {it;307.1}text1{it;307.2} def {it;307.3}text2{it;307.4} ghi.");
                p.Target.DebuggerDisplay.Is("it: ABC {it;307.3}TEXT2{it;307.4} DEF {it;307.1}TEXT1{it;307.2} GHI.");
                VerifyTagOrderChanged(p);
            }
        }
Пример #16
0
        /// <summary>
        /// Demonstrates how to store custom attributes and elements on a <see cref="File"/> element using a custom
        /// extension and element types.
        /// </summary>
        public static void StoreCustomExtension()
        {
            TestExtension extension;
            IExtensible   extensible;
            Segment       segment;
            XliffDocument document;
            XliffReader   reader;
            Unit          unit;
            string        path;

            // This namespace will be stored on the document element like: <xliff xmlns:pre1="urn:custom:extension:1.0"
            const string customNamespace = "urn:custom:extension:1.0";
            const string customPrefix    = "customPrefix";

            extension = new TestExtension();

            document = new XliffDocument("en-us");
            document.Files.Add(new File("f1"));

            unit = new Unit("u1");
            document.Files[0].Containers.Add(unit);

            segment = new Segment("s1");
            unit.Resources.Add(segment);

            segment.Source = new Source();
            segment.Source.Text.Add(new PlainText("text"));

            extensible = document.Files[0];

            // Create custom attributes that look like: <file id="f1" pre1:testattr1="testvalue1" pre1:testattr2="testvalue2">
            if (extensible.SupportsAttributeExtensions)
            {
                extension.AddAttribute(new TestAttribute(customPrefix, customNamespace, "testattr1", "testvalue1"));
                extension.AddAttribute(new TestAttribute(customPrefix, customNamespace, "testattr2", "testvalue2"));
                extensible.Extensions.Add(extension);
            }

            // Create a custom element that looks like: <pre1:testelement1 pre1:testattr1="testvalue1" />
            if (extensible.SupportsElementExtensions)
            {
                ElementInfo info;
                TestElement element;

                element = new TestElement();
                element.SetAttribute(customPrefix, customNamespace, "testattr1", "testvalue1");
                info = new ElementInfo(new XmlNameInfo(customPrefix, customNamespace, "testelement1"), element);
                extension.AddChild(info);
            }

            // Write the file just like any other file.
            path = IO.Path.GetTempFileName();
            SampleCode.WriteDocument(document, path);

            // Read the file using an custom extension handler so the custom types are loaded. The loaded File will
            // have the custom extension and attributes and elements on it just like it was created above.
            reader = new XliffReader();
            reader.RegisterExtensionHandler(customNamespace, new TestExtensionHandler());
            using (IO.FileStream stream = new IO.FileStream(path, IO.FileMode.Open, IO.FileAccess.Read))
            {
                document = reader.Deserialize(stream);
            }
        }
Пример #17
0
        public void ChangeTracking_1()
        {
            var N = InlineString.RenderNormal;
            var L = InlineString.RenderOlder;
            var F = InlineString.RenderFlat;
            var D = InlineString.RenderDebug;

            var path   = Path.Combine(IDIR, "ChangeTracking_memoQ_1.mqxliff");
            var bundle = new XliffReader().Read(path);

            bundle.Assets.Count().Is(1);

            var pairs = bundle.Assets.ElementAt(0).TransPairs.ToArray();
            {
                pairs[0].Source.ToString().Is("Change Tracking");
                pairs[1].Source.ToString().Is("Paragraph #1.");
                pairs[2].Source.ToString().Is("Paragraph #2.");
                pairs[3].Source.ToString().Is("<b>Paragraph</b> #3 with <i>tags</i>.");
                pairs[4].Source.ToString().Is("<b>Paragraph</b> #4 with <i>tags</i>.");

                pairs[0].Source.ToString(N).Is("Change Tracking");
                pairs[1].Source.ToString(N).Is("Paragraph #1.");
                pairs[2].Source.ToString(N).Is("Paragraph #2.");
                pairs[3].Source.ToString(N).Is("<b>Paragraph</b> #3 with <i>tags</i>.");
                pairs[4].Source.ToString(N).Is("<b>Paragraph</b> #4 with <i>tags</i>.");

                pairs[0].Source.ToString(L).Is("Change Tracking");
                pairs[1].Source.ToString(L).Is("Paragraph #1.");
                pairs[2].Source.ToString(L).Is("Paragraph #2.");
                pairs[3].Source.ToString(L).Is("<b>Paragraph</b> #3 with <i>tags</i>.");
                pairs[4].Source.ToString(L).Is("<b>Paragraph</b> #4 with <i>tags</i>.");

                pairs[0].Source.ToString(F).Is("Change Tracking");
                pairs[1].Source.ToString(F).Is("Paragraph #1.");
                pairs[2].Source.ToString(F).Is("Paragraph #2.");
                pairs[3].Source.ToString(F).Is("Paragraph #3 with tags.");
                pairs[4].Source.ToString(F).Is("Paragraph #4 with tags.");

                pairs[0].Source.ToString(D).Is("Change Tracking");
                pairs[1].Source.ToString(D).Is("Paragraph #1.");
                pairs[2].Source.ToString(D).Is("Paragraph #2.");
                pairs[3].Source.ToString(D).Is("{bpt;1}Paragraph{ept;2} #3 with {bpt;3}tags{ept;4}.");
                pairs[4].Source.ToString(D).Is("{bpt;1}Paragraph{ept;2} #4 with {bpt;3}tags{ept;4}.");

                pairs[0].Target.ToString().Is("CHANGE TRACKING");
                pairs[1].Target.ToString().Is("#1.");
                pairs[2].Target.ToString().Is("PARAGRAPH #2 INSERTED.");
                pairs[3].Target.ToString().Is("WITH <i>TAGS</i>, <b>PARAGRAPH</b> #3.");
                pairs[4].Target.ToString().Is("<b>ABRACADABRA</b> #4 with <i>TAGS</i>.");

                pairs[0].Target.ToString(N).Is("CHANGE TRACKING");
                pairs[1].Target.ToString(N).Is("#1.");
                pairs[2].Target.ToString(N).Is("PARAGRAPH #2 INSERTED.");
                pairs[3].Target.ToString(N).Is("WITH <i>TAGS</i>, <b>PARAGRAPH</b> #3.");
                pairs[4].Target.ToString(N).Is("<b>ABRACADABRA</b> #4 with <i>TAGS</i>.");

                pairs[0].Target.ToString(L).Is("CHANGE TRACKING");
                pairs[1].Target.ToString(L).Is("PARAGRAPH #1.");
                pairs[2].Target.ToString(L).Is("PARAGRAPH #2.");
                pairs[3].Target.ToString(L).Is("<b>PARAGRAPH</b> #3 WITH <i>TAGS</i>.");
                pairs[4].Target.ToString(L).Is("<b>PARAGRAPH</b> #4 with <i>TAGS</i>.");

                pairs[0].Target.ToString(F).Is("CHANGE TRACKING");
                pairs[1].Target.ToString(F).Is("#1.");
                pairs[2].Target.ToString(F).Is("PARAGRAPH #2 INSERTED.");
                pairs[3].Target.ToString(F).Is("WITH TAGS, PARAGRAPH #3.");
                pairs[4].Target.ToString(F).Is("ABRACADABRA #4 with TAGS.");

                pairs[0].Target.ToString(D).Is("CHANGE TRACKING");
                pairs[1].Target.ToString(D).Is("{Del}PARAGRAPH {None}#1.");
                pairs[2].Target.ToString(D).Is("PARAGRAPH #2{Ins} INSERTED{None}.");
                pairs[3].Target.ToString(D).Is("{Del}{bpt;1}PARAGRAPH{ept;2} #3 {None}WITH {bpt;3}TAGS{ept;4}{Ins}, {bpt;5}PARAGRAPH{ept;6} #3{None}.");
                pairs[4].Target.ToString(D).Is("{bpt;1}{Del}PARAGRAPH{Ins}ABRACADABRA{None}{ept;2} #4 with {bpt;3}TAGS{ept;4}.");
            }
        }
Пример #18
0
        public void Xliff_DataDriven()
        {
            string         path;
            ExpectedResult expectedResult;
            int            errorNumber;

            errorNumber    = -1;
            path           = (string)this.TestContext.DataRow[FileBasedTests.TestEntryPathAttribute];
            expectedResult = (ExpectedResult)Enum.Parse(
                typeof(ExpectedResult),
                (string)this.TestContext.DataRow[FileBasedTests.TestEntryResultAttribute]);
            if (expectedResult == ExpectedResult.ValidationError)
            {
                errorNumber = int.Parse((string)this.TestContext.DataRow[FileBasedTests.TestEntryErrorAttribute]);
            }

            Trace.WriteLine("Path: " + path);
            Trace.WriteLine("ExpectedResult: " + expectedResult);
            Trace.WriteLine("ErrorNumber: " + errorNumber);

            try
            {
                Assert.IsTrue(System.IO.File.Exists(path), "File '{0}' doesn't exist.", path);
                using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
                {
                    XliffDocument document;
                    XliffReader   reader;

                    reader   = new XliffReader();
                    document = reader.Deserialize(stream);
                }

                Assert.AreEqual(expectedResult, ExpectedResult.Success, "Expected result is incorrect.");
            }
            catch (FormatException)
            {
                if (expectedResult != ExpectedResult.BadFormat)
                {
                    throw;
                }
            }
            catch (InvalidOperationException)
            {
                if (expectedResult != ExpectedResult.InvalidOperation)
                {
                    throw;
                }
            }
            catch (NotSupportedException)
            {
                if (expectedResult != ExpectedResult.NotSupported)
                {
                    throw;
                }
            }
            catch (ValidationException e)
            {
                if (expectedResult != ExpectedResult.ValidationError)
                {
                    throw;
                }

                Assert.AreEqual(errorNumber, e.ErrorNumber, "ErrorNumber is incorrect.");
            }
            catch (XmlException)
            {
                if (expectedResult != ExpectedResult.ReadError)
                {
                    throw;
                }
            }
        }
Пример #19
0
        public void Read_Crafted_02()
        {
            var path   = Path.Combine(IDIR, "Crafted02.xliff");
            var bundle = new XliffReader().Read(path);
            var a      = bundle.Assets.ElementAt(0);

            a.TransPairs.Count().Is(7);
            {
                var p = a.TransPairs.ElementAt(0);
                p.Serial.Is(1);
                p.Id.Is("201");
                p.Source.DebuggerDisplay.Is("Various inline tags for: abc [CODE]text[/CODE] def.");
                p.Target.DebuggerDisplay.Is("Various inline tags for: ABC [CODE]TEXT[/CODE] DEF.");
            }
            {
                var p = a.TransPairs.ElementAt(1);
                p.Serial.Is(2);
                p.Id.Is("202");
                p.Source.DebuggerDisplay.Is("bpt/ept: abc {bpt;202.1}text{ept;202.2} def.");
                p.Target.DebuggerDisplay.Is("bpt/ept: ABC {bpt;202.1}TEXT{ept;202.2} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.B);
                    t.Id.Is("202.1");
                    t.Rid.Is("202r1");
                    t.Name.Is("bpt");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[CODE]");
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.E);
                    t.Id.Is("202.2");
                    t.Rid.Is("202r1");
                    t.Name.Is("ept");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[/CODE]");
                    t.Number.Is(2);
                }
                {
                    var t = p.Target.Tags.ElementAt(0);
                    t.TagType.Is(Tag.B);
                    t.Id.Is("202.1");
                    t.Rid.Is("202r1");
                    t.Name.Is("bpt");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[CODE]");
                    t.Number.Is(1);
                }
                {
                    var t = p.Target.Tags.ElementAt(1);
                    t.TagType.Is(Tag.E);
                    t.Id.Is("202.2");
                    t.Rid.Is("202r1");
                    t.Name.Is("ept");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[/CODE]");
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
            {
                var p = a.TransPairs.ElementAt(2);
                p.Serial.Is(3);
                p.Id.Is("203");
                p.Source.DebuggerDisplay.Is("bx/ex: abc {bx;203.1}text{ex;203.2} def.");
                p.Target.DebuggerDisplay.Is("bx/ex: ABC {bx;203.1}TEXT{ex;203.2} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.B);
                    t.Id.Is("203.1");
                    t.Rid.Is("203r1");
                    t.Name.Is("bx");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.E);
                    t.Id.Is("203.2");
                    t.Rid.Is("203r1");
                    t.Name.Is("ex");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
            {
                var p = a.TransPairs.ElementAt(3);
                p.Serial.Is(4);
                p.Id.Is("204");
                p.Source.DebuggerDisplay.Is("g: abc {g;204.1}text{g;204.1} def.");
                p.Target.DebuggerDisplay.Is("g: ABC {g;204.1}TEXT{g;204.1} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.B);
                    t.Id.Is("204.1");
                    t.Rid.Is("204.1");
                    t.Name.Is("g");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.E);
                    t.Id.Is("204.1");
                    t.Rid.Is("204.1");
                    t.Name.Is("g");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
            {
                var p = a.TransPairs.ElementAt(4);
                p.Serial.Is(5);
                p.Id.Is("205");
                p.Source.DebuggerDisplay.Is("ph: abc {ph;205.1}text{ph;205.2} def.");
                p.Target.DebuggerDisplay.Is("ph: ABC {ph;205.1}TEXT{ph;205.2} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.S);
                    t.Id.Is("205.1");
                    t.Rid.Is("205.1");
                    t.Name.Is("ph");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[CODE]");
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.S);
                    t.Id.Is("205.2");
                    t.Rid.Is("205.2");
                    t.Name.Is("ph");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[/CODE]");
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
            {
                var p = a.TransPairs.ElementAt(5);
                p.Serial.Is(6);
                p.Id.Is("206");
                p.Source.DebuggerDisplay.Is("x: abc {x;206.1}text{x;206.2} def.");
                p.Target.DebuggerDisplay.Is("x: ABC {x;206.1}TEXT{x;206.2} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.S);
                    t.Id.Is("206.1");
                    t.Rid.Is("206.1");
                    t.Name.Is("x");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.S);
                    t.Id.Is("206.2");
                    t.Rid.Is("206.2");
                    t.Name.Is("x");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.IsNull();
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
            {
                var p = a.TransPairs.ElementAt(6);
                p.Serial.Is(7);
                p.Id.Is("207");
                p.Source.DebuggerDisplay.Is("it: abc {it;207.1}text{it;207.2} def.");
                p.Target.DebuggerDisplay.Is("it: ABC {it;207.1}TEXT{it;207.2} DEF.");
                {
                    var t = p.Source.Tags.ElementAt(0);
                    t.TagType.Is(Tag.B);
                    t.Id.Is("207.1");
                    t.Rid.Is("207r1");
                    t.Name.Is("it");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[CODE]");
                    t.Number.Is(1);
                }
                {
                    var t = p.Source.Tags.ElementAt(1);
                    t.TagType.Is(Tag.E);
                    t.Id.Is("207.2");
                    t.Rid.Is("207r1");
                    t.Name.Is("it");
                    t.Ctype.IsNull();
                    t.Display.IsNull();
                    t.Code.Is("[/CODE]");
                    t.Number.Is(2);
                }
                p.Target.Tags.Is(p.Source.Tags);
            }
        }
Пример #20
0
        public void Read_Crafted_04()
        {
            var path   = Path.Combine(IDIR, "Crafted04.xliff");
            var bundle = new XliffReader().Read(path);
            var a      = bundle.Assets.ElementAt(0);
            var pairs  = a.TransPairs.ToArray();

            {
                var p = pairs[0];
                p.Id.Is("401a");
                p.Source.DebuggerDisplay.Is("Segmentation");
                p.Target.DebuggerDisplay.Is("SEGMENTATION");
            }
            {
                var p = pairs[1];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[2];
                p.Id.Is("402a");
                p.Source.DebuggerDisplay.Is("Spaces are excluded from the segment.");
                p.Target.DebuggerDisplay.Is("SPACES ARE EXCLUDED FROM THE SEGMENT.");
            }
            {
                var p = pairs[3];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[4];
                p.Id.Is("403a");
                p.Source.DebuggerDisplay.Is("Multiple sentences.");
                p.Target.DebuggerDisplay.Is("MULTIPLE SENTENCES.");
            }
            {
                var p = pairs[5];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[6];
                p.Id.Is("403b");
                p.Source.DebuggerDisplay.Is("In a trans-unit.");
                p.Target.DebuggerDisplay.Is("IN A trans-unit.");
            }
            {
                var p = pairs[7];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[8];
                p.Id.Is("403c");
                p.Source.DebuggerDisplay.Is("Broken into segments.");
                p.Target.DebuggerDisplay.Is("BROKEN INTO SEGMENTS.");
            }
            {
                var p = pairs[9];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[10];
                p.Source.DebuggerDisplay.Is("\u0009{g;404.1}{ph;404.2} ");
                p.Target.DebuggerDisplay.Is("\u0009{g;404.1}{ph;404.2} ");
            }
            {
                var p = pairs[11];
                p.Id.Is("404a");
                p.Source.DebuggerDisplay.Is("Multiple sentences.");
                p.Target.DebuggerDisplay.Is("MULTIPLE SENTENCES.");
            }
            {
                var p = pairs[12];
                p.Source.DebuggerDisplay.Is("  ");
                p.Target.DebuggerDisplay.Is("  ");
            }
            {
                var p = pairs[13];
                p.Id.Is("404b");
                p.Source.DebuggerDisplay.Is("In a single {g;404.3}g{g;404.3}.");
                p.Target.DebuggerDisplay.Is("IN A SINGLE {g;404.3}g{g;404.3}.");
            }
            {
                var p = pairs[14];
                p.Source.DebuggerDisplay.Is(" {ph;404.4}{g;404.1} ");
                p.Target.DebuggerDisplay.Is(" {ph;404.4}{g;404.1} ");
            }
            pairs.Length.Is(15);
        }