Exemple #1
0
        public void BuildDtbTest()
        {
            var builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromNcc(Dtb1NccUri));

            builder.BuildDtb();
            ValidateBuiltDtb(builder);
        }
Exemple #2
0
        public void NccElementsTest()
        {
            var entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav1"
                }.Uri
            };
            var nccElements = entry.NccElements?.ToList();

            Assert.IsNotNull(nccElements, "Found ncc elements is null");
            Assert.IsTrue(nccElements.Any(), "Found no ncc elements");
            Assert.AreEqual(1, nccElements.Count(), "Expected 1 ncc element");
            Assert.IsFalse(String.IsNullOrEmpty(nccElements.First().BaseUri), "First ncc element has no base uri");
            Assert.AreEqual(nccElements.First().Attribute("id")?.Value, "nav1");
            Assert.AreEqual(nccElements.First().Attribute("class")?.Value, "title");
            Assert.AreEqual(nccElements.First().Name.LocalName, "h1");
            entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav3_2"
                }.Uri
            };
            Assert.IsNotNull(nccElements, "Found ncc elements is null");
            Assert.IsTrue(nccElements.Any(), "Found no ncc elements");
            Assert.AreEqual(1, nccElements.Count(), "Expected 1 ncc element");
        }
Exemple #3
0
        public void SaveDtbTest()
        {
            var builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromNcc(Dtb1NccUri));

            builder.BuildDtb();
            builder.SaveDtb("./MergedDTB");
            ValidateSavedDtb(builder, "./MergedDTB");
        }
Exemple #4
0
        private void LoadMacroTest(Uri uri)
        {
            var macro        = XDocument.Load(uri.AbsoluteUri, LoadOptions.SetBaseUri);
            var mergeEntries = MergeEntry.LoadMergeEntriesFromMacro(macro).ToList();

            CheckMergeEntriesLoadedFromMacro(macro, mergeEntries);
            mergeEntries = MergeEntry.LoadMergeEntriesFromMacro(macro).ToList();
            CheckMergeEntriesLoadedFromMacro(macro, mergeEntries);
        }
Exemple #5
0
        [Ignore]//Need to map C:\Users\oha\VirtualBlizzardDrive to D: using subst D: C:\Users\oha\VirtualBlizzardDrive
        public void SaveBerlDtbTest()
        {
            var builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromMacro(new Uri(
                                                                                  @"D:\BlizzardData\batch\BERL\Publisher\20180516_143247_001\merge.xml")));

            builder.BuildDtb();
            builder.SaveDtb("./MergedBERLDTB");
            ValidateSavedDtb(builder, "./MergedBERLDTB");
        }
Exemple #6
0
        public void LoadMergeEntriesFromNccTest()
        {
            var entries = MergeEntry.LoadMergeEntriesFromNcc(dtb1NccUri)?.ToList();

            Assert.IsNotNull(entries);
            Assert.AreEqual(4, entries.Count());
            Assert.IsTrue(entries.All(e => e.NccElements.First().Name.LocalName == "h1"), "One loaded entry did not have h1 as first ncc element");
            Assert.AreEqual(0, entries.Last().ChildNodes.Count, "Expected last entry to have no children");
            Assert.AreEqual(8, entries.SelectMany(e => new[] { e }.Union(e.Descendents)).Count(), "Expected a total of 7 entries");
        }
Exemple #7
0
        [Ignore]//Need to map C:\Users\oha\VirtualBlizzardDrive to D: using subst D: C:\Users\oha\VirtualBlizzardDrive
        public void LoadMergeEntriesFromBerlMacroTest()
        {
            var entries = MergeEntry.LoadMergeEntriesFromMacro(new Uri(
                                                                   @"D:\BlizzardData\batch\BERL\Publisher\20180516_143247_001\merge.xml")).ToList();

            Assert.IsNotNull(entries, "Loaded entries was null");
            Assert.IsTrue(entries.SelectMany(e => e.NccElements).Any(), "Found no ncc elements");
            Assert.IsTrue(entries.SelectMany(e => e.SmilElements).Any(), "Found no smil elements");
            Assert.IsTrue(entries.SelectMany(e => e.AudioSegments).Any(), "Found no audio segments");
            Assert.IsTrue(entries.SelectMany(e => e.TextElements).Any(), "Found no text elements");
        }
Exemple #8
0
        public void AudioSegmentsTest()
        {
            var entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav1"
                }.Uri
            };
            var audioSegments = entry.AudioSegments.ToList();

            Assert.IsNotNull(audioSegments, "Audio segments elements null");
            Assert.IsTrue(audioSegments.Any(), "Found no audio segments");
            Assert.AreEqual(1, audioSegments.Count(), "Expected one audio segment in DTB1 first heading");
        }
Exemple #9
0
 public void SmilElementsTest()
 {
     foreach (var frag in new[] { "nav1", "nav3_2" })
     {
         var entry = new MergeEntry()
         {
             SourceNavEntry = new UriBuilder(dtb1NccUri)
             {
                 Fragment = frag
             }.Uri
         };
         var smilElements = entry.SmilElements?.ToList();
         Assert.IsNotNull(smilElements, "Smil elements null");
         Assert.IsTrue(smilElements.Any(), "Found no smil elements");
         Assert.IsTrue(smilElements.All(e => e.Name.LocalName == "par"));
     }
 }
Exemple #10
0
 public void NccTest()
 {
     foreach (var frag in new[] { "nav1", "nav3_2" })
     {
         var entry = new MergeEntry()
         {
             SourceNavEntry = new UriBuilder(dtb1NccUri)
             {
                 Fragment = frag
             }.Uri
         };
         Assert.IsNotNull(entry.Ncc, "Entry has null Ncc");
         Assert.IsNotNull(entry.Ncc.BaseUri, "Entry Ncc has null BaseUri");
         Assert.IsTrue(Uri.IsWellFormedUriString(Uri.EscapeUriString(entry.Ncc.BaseUri), UriKind.Absolute), $"Entrys Ncc does not have a well formed absolute BaseUri: {entry.Ncc.BaseUri}");
         Assert.AreEqual("html", entry.Ncc.Root?.Name?.LocalName);
     }
 }
Exemple #11
0
        public void GetTextElementsTest()
        {
            var entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav1"
                }.Uri
            };
            var textElements = entry.TextElements?.ToList();

            Assert.IsNotNull(textElements, "Text elements is null");
            Assert.IsTrue(textElements.Any(), "Found no text elements");
            Assert.IsTrue(textElements.All(e => e.Parent?.Name == (e.Name.Namespace + "body")));
            Assert.AreEqual(3, textElements.Count(), "Expected 3 text elements, including unreferenced image");
            entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav3_2"
                }.Uri
            };
            textElements = entry.TextElements?.ToList();
            Assert.IsNotNull(textElements, "Text elements is null");
            Assert.IsTrue(textElements.Any(), "Found no text elements");
            Assert.IsTrue(textElements.All(e => e.Parent?.Name == (e.Name.Namespace + "body")));
            Assert.AreEqual(5, textElements.Count(), "Expected 5 text elements, including table");
            entry = new MergeEntry()
            {
                SourceNavEntry = new UriBuilder(dtb1NccUri)
                {
                    Fragment = "nav4"
                }.Uri
            };
            textElements = entry.TextElements?.ToList();
            Assert.IsNotNull(textElements, "Text elements is null");
            Assert.IsTrue(textElements.Any(), "Found no text elements");
            Assert.IsTrue(textElements.All(e => e.Parent?.Name == (e.Name.Namespace + "body")));
            Assert.AreEqual(4, textElements.Count(), "Expected 4 text elements");
            Assert.AreEqual(
                2,
                textElements.Select(te => te.Document).Distinct().Count(),
                "Expected text elements from two content documents");
        }
Exemple #12
0
        public static void InitializeClass(TestContext context)
        {
            var totelElapsedTime = TimeSpan.Zero;
            var entries          = MergeEntry.LoadMergeEntriesFromNcc(Dtb1NccUri).ToList();

            foreach (var smil in entries.SelectMany(e => e.DescententsAndSelf).Select(e => e.Smil))
            {
                DtbAudioGenerator.NarrateTextsForSmilFile(smil, ref totelElapsedTime, smil.BaseUri.EndsWith("sm0001.smil"));
                smil.Save(new Uri(smil.BaseUri).LocalPath);
            }
            var nccHead = entries.First().Ncc.Root?.Element(Utils.XhtmlNs + "head");

            if (nccHead != null)
            {
                var ttMeta = nccHead
                             .Elements(Utils.XhtmlNs + "meta")
                             .FirstOrDefault(m => m.Attribute("name")?.Value == "nccHead:totalTime");
                if (ttMeta == null)
                {
                    ttMeta = new XElement(Utils.XhtmlNs + "meta", new XAttribute("name", "nccHead:totalTime"));
                    nccHead.Add(ttMeta);
                }
            }
        }
Exemple #13
0
        private static int Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine($"Invalid number of arguments\n{Usage}");
                return(-1);
            }

            try
            {
                if (!File.Exists(args[0]))
                {
                    Console.WriteLine($"Could not find macro file {args[0]}\n{Usage}");
                }

                XDocument macro;
                try
                {
                    macro = XDocument.Load(args[0], LoadOptions.SetBaseUri | LoadOptions.SetLineInfo);
                }
                catch (XmlException xe)
                {
                    Console.WriteLine(
                        $"Could not load macro {args[0]}: {xe.Message}\nat line {xe.LineNumber}, pos {xe.LinePosition})");
                    return(-1);
                }
                Console.WriteLine($"Loaded macro {args[0]}");
                DtbBuilder builder;
                try
                {
                    builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromMacro(macro));
                }
                catch (Exception e)
                {
                    Console.WriteLine(
                        $"Could not load merge entries from macro {args[0]}: {e.Message}\n{Usage}");
                    return(-1);
                }
                builder.BuildDtb();
                Console.WriteLine("Built Dtb");
                if (!Directory.Exists(args[1]))
                {
                    try
                    {
                        Directory.CreateDirectory(args[1]);
                        Console.WriteLine($"Created output directory {args[1]}");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine($"Could not create directory {args[1]}: {e.Message}\n{Usage}");
                        return(-1);
                    }
                }

                builder.SaveDtb(
                    args[1],
                    (i, s) =>
                {
                    Console.Write($"{i} % {s}".PadRight(100).Substring(0, 100) + "\r");
                    return(false);
                });
                Console.Write("".PadRight(101) + "\r");
                Console.WriteLine($"Saved built Dtb to {args[1]}");
                return(0);
            }
            catch (Exception e)
            {
                Console.WriteLine($"An unexpected {e.GetType()} occured: {e.Message}\n{Usage}");
                return(-2);
            }
        }
Exemple #14
0
 public MergeEngine(ICollection <IBaseRule> rules, ConfigurationProperties properties, IDatabaseType databaseType, SchemaMetaData metaData)
 {
     this.rules = rules;
     merger     = new MergeEntry(databaseType, metaData, properties);
 }
 public MergeEntryTimeTuple(string relativePath, MergeEntry mergeEntry, DateTime time)
 {
     RelativePath = relativePath;
     MergeEntry   = mergeEntry;
     Time         = time;
 }