예제 #1
0
        public void TestConvertToXMLNormalizedRoundtrip()
        {
            MemoryStream out1 = null;

            using (var input = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
            {
                Assert.IsNotNull(input);
                out1 = new MemoryStream();
                MarcStreamReader marcReader = new MarcStreamReader(input);
                MarcXmlWriter    xmlWriter  = new MarcXmlWriter(out1);
                xmlWriter.Converter            = new AnselToUnicode();
                xmlWriter.UnicodeNormalization = true;
                while (marcReader.MoveNext())
                {
                    var record = marcReader.Current;
                    xmlWriter.Write(record);
                }
                input.Close();

                xmlWriter.Close();
                out1.Close();
            }
            using (MemoryStream out2 = new MemoryStream())
            {
                using (MemoryStream @in = new MemoryStream(out1.ToArray()))
                {
                    var xmlReader = new MarcXmlReader(@in).GetEnumerator();
                    MarcStreamWriter marcWriter = new MarcStreamWriter(out2);
                    marcWriter.Converter = new UnicodeToAnsel();
                    while (xmlReader.MoveNext())
                    {
                        var record = xmlReader.Current;
                        marcWriter.Write(record);
                    }
                    @in.Close();
                    marcWriter.Close();

                    out2.Close();

                    using (var inputCompare1 = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
                    {
                        Assert.IsNotNull(inputCompare1);
                        var inputCompare2 = new MemoryStream(out2.ToArray());
                        MarcStreamReader readComp1 = new MarcStreamReader(inputCompare1);
                        MarcStreamReader readComp2 = new MarcStreamReader(inputCompare2);
                        IRecord          r1, r2;
                        do
                        {
                            r1 = (readComp1.MoveNext()) ? readComp1.Current : null;
                            r2 = (readComp2.MoveNext()) ? readComp2.Current : null;
                            if (r1 != null && r2 != null)
                            {
                                RecordTestingUtils.AssertEqualsIgnoreLeader(r1, r2);
                            }
                        } while (r1 != null && r2 != null);
                    }
                }
            }
        }
예제 #2
0
        public void TestMarcStreamReader()
        {
            using (var fs = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_CHABON_MRC, FileMode.Open))
            {
                Assert.IsNotNull(fs);
                using (MarcStreamReader reader = new MarcStreamReader(fs))
                {
                    Assert.IsTrue(reader.MoveNext(), "Should have at least one record");

                    var record1 = reader.Current;
                    TestUtils.ValidateKavalieAndClayRecord(record1);

                    Assert.IsTrue(reader.MoveNext(), "Should have at least two records");
                    var record2 = reader.Current;
                    TestUtils.ValidateSummerlandRecord(record2);

                    Assert.IsFalse(reader.MoveNext(), " have more than two records");
                }
            }
        }
예제 #3
0
        public void TestWriteAndReadRoundtripConverted()
        {
            MemoryStream out2 = null;

            using (var input = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
            {
                Assert.IsNotNull(input);
                var out1 = new MemoryStream();
                MarcStreamReader marcReader1 = new MarcStreamReader(input);
                MarcStreamWriter marcWriter1 = new MarcStreamWriter(out1, "UTF-8");
                marcWriter1.Converter = new AnselToUnicode();
                while (marcReader1.MoveNext())
                {
                    var record = marcReader1.Current;
                    marcWriter1.Write(record);
                }
                input.Close();
                marcWriter1.Close();
                out1.Close();
                out2 = new MemoryStream();
                var @in = new MemoryStream(out1.ToArray());
                MarcStreamReader marcReader2 = new MarcStreamReader(@in);
                MarcStreamWriter marcWriter2 = new MarcStreamWriter(out2);
                marcWriter2.Converter = new UnicodeToAnsel();
                while (marcReader2.MoveNext())
                {
                    var record = marcReader2.Current;
                    marcWriter2.Write(record);
                }
                @in.Close();
            }

            using (var inputCompare1 = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
            {
                var     inputCompare2 = out2;
                var     readComp1 = new MarcStreamReader(inputCompare1);
                var     readComp2 = new MarcStreamReader(inputCompare2);
                IRecord r1, r2;
                do
                {
                    r1 = (readComp1.MoveNext()) ? readComp1.Current : null;
                    r2 = (readComp2.MoveNext()) ? readComp2.Current : null;
                    if (r1 != null && r2 != null)
                    {
                        RecordTestingUtils.AssertEqualsIgnoreLeader(r1, r2);
                    }
                } while (r1 != null && r2 != null);
            }

            out2.Dispose();
        }
예제 #4
0
        public void TestWriteAndReadRoundtrip()
        {
            MemoryStream out2 = null;

            using (var input = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_CHABON_MRC, FileMode.Open))
            {
                Assert.IsNotNull(input);
                using (var out1 = new MemoryStream())
                {
                    MarcStreamReader marcReader = new MarcStreamReader(input);
                    using (MarcXmlWriter xmlWriter = new MarcXmlWriter(out1))
                    {
                        while (marcReader.MoveNext())
                        {
                            var record = marcReader.Current;
                            xmlWriter.Write(record);
                        }
                    }
                    out2 = new MemoryStream();
                    var @in       = new MemoryStream(out1.ToArray());
                    var xmlReader = new MarcXmlReader(@in).GetEnumerator();
                    MarcStreamWriter marcWriter = new MarcStreamWriter(out2);
                    while (xmlReader.MoveNext())
                    {
                        var record = xmlReader.Current;
                        marcWriter.Write(record);
                    }
                    @in.Close();
                }
            }
            using (var inputCompare1 = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_CHABON_MRC, FileMode.Open))
            {
                var     inputCompare2 = out2;
                var     readComp1 = new MarcStreamReader(inputCompare1);
                var     readComp2 = new MarcStreamReader(inputCompare2);
                IRecord r1, r2;
                do
                {
                    r1 = (readComp1.MoveNext()) ? readComp1.Current : null;
                    r2 = (readComp2.MoveNext()) ? readComp2.Current : null;
                    if (r1 != null && r2 != null)
                    {
                        RecordTestingUtils.AssertEqualsIgnoreLeader(r1, r2);
                    }
                } while (r1 != null && r2 != null);
            }
            out2.Dispose();
        }
예제 #5
0
 public void TestMarcXmlWriterNormalized()
 {
     using (var ms = new MemoryStream())
     {
         using (var fs = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
         {
             Assert.IsNotNull(fs);
             MarcXmlWriter writer = new MarcXmlWriter(fs, true);
             writer.Converter = new AnselToUnicode();
             MarcStreamReader reader = new MarcStreamReader(ms);
             while (reader.MoveNext())
             {
                 var record = reader.Current;
                 writer.Write(record);
             }
             using (StreamReader Testoutput = new StreamReader(fs, Encoding.UTF8))
             {
                 String line;
                 while ((line = Testoutput.ReadLine()) != null)
                 {
                     if (Regex.IsMatch(line, "[ ]*<subfield code=\"a\">This is a Test of diacritics.*"))
                     {
                         String[] lineParts = line.Split(new string[] { ", " }, StringSplitOptions.None);
                         foreach (var linePart in lineParts)
                         {
                             if (linePart.StartsWith("the tilde in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the tilde in man\u0303ana"), "Incorrect value for tilde");
                             }
                             else if (linePart.StartsWith("the grave accent in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the grave accent in tre\u0300s"), "Incorrect value for grave");
                             }
                             else if (linePart.StartsWith("the acute accent in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the acute accent in de\u0301sire\u0301e"), "Incorrect value for acute");
                             }
                             else if (linePart.StartsWith("the circumflex in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the circumflex in co\u0302te"), "Incorrect value for macron");
                             }
                             else if (linePart.StartsWith("the macron in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the macron in To\u0304kyo"), "Incorrect value for macron");
                             }
                             else if (linePart.StartsWith("the breve in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the breve in russkii\u0306"), "Incorrect value for breve");
                             }
                             else if (linePart.StartsWith("the dot above in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the dot above in z\u0307aba"), "Incorrect value for dot above");
                             }
                             else if (linePart.StartsWith("the dieresis (umlaut) in "))
                             {
                                 Assert.IsTrue(linePart.Equals("the dieresis (umlaut) in Lo\u0308wenbra\u0308u"), "Incorrect value for umlaut");
                             }
                         }
                     }
                 }
             }
         }
     }
 }
예제 #6
0
 public void TestMarcXmlWriterConvertedToUTF8AndNormalized()
 {
     using (var output = new MemoryStream())
     {
         using (var fs = new FileStream(Environment.CurrentDirectory + StaticTestRecords.RESOURCES_BRKRTEST_MRC, FileMode.Open))
         {
             Assert.IsNotNull(fs);
             MarcXmlWriter writer = new MarcXmlWriter(output, true);
             writer.Converter            = new AnselToUnicode();
             writer.UnicodeNormalization = true;
             MarcStreamReader reader = new MarcStreamReader(fs);
             while (reader.MoveNext())
             {
                 var record = reader.Current;
                 writer.Write(record);
             }
             using (StreamReader Testoutput = new StreamReader(fs, Encoding.UTF8))
             {
                 String line;
                 while ((line = Testoutput.ReadLine()) != null)
                 {
                     if (Regex.IsMatch(line, "[ ]*<subfield code=\"a\">This is a Test of diacritics.*"))
                     {
                         String[] lineParts = line.Split(new string[] { ", " }, StringSplitOptions.None);
                         for (int i = 0; i < lineParts.Length; i++)
                         {
                             if (lineParts[i].StartsWith("the tilde in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the tilde in ma\u00F1ana"), "Incorrect normalized value for tilde accent");
                             }
                             else if (lineParts[i].StartsWith("the grave accent in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the grave accent in tr\u00E8s"), "Incorrect normalized value for grave accent");
                             }
                             else if (lineParts[i].StartsWith("the acute accent in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the acute accent in d\u00E9sir\u00E9e"), "Incorrect normalized value for acute accent");
                             }
                             else if (lineParts[i].StartsWith("the circumflex in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the circumflex in c\u00F4te"), "Incorrect normalized value for circumflex");
                             }
                             else if (lineParts[i].StartsWith("the macron in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the macron in T\u014Dkyo"), "Incorrect normalized value for macron");
                             }
                             else if (lineParts[i].StartsWith("the breve in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the breve in russki\u012D"), "Incorrect normalized value for breve");
                             }
                             else if (lineParts[i].StartsWith("the dot above in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the dot above in \u017Caba"), "Incorrect normalized value for dot above");
                             }
                             else if (lineParts[i].StartsWith("the dieresis (umlaut) in "))
                             {
                                 Assert.IsTrue(lineParts[i].Equals("the dieresis (umlaut) in L\u00F6wenbr\u00E4u"), "Incorrect normalized value for umlaut");
                             }
                         }
                     }
                 }
             }
         }
     }
 }