public void BuildDtbTest() { var builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromNcc(Dtb1NccUri)); builder.BuildDtb(); ValidateBuiltDtb(builder); }
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"); }
public void SaveDtbTest() { var builder = new DtbBuilder(MergeEntry.LoadMergeEntriesFromNcc(Dtb1NccUri)); builder.BuildDtb(); builder.SaveDtb("./MergedDTB"); ValidateSavedDtb(builder, "./MergedDTB"); }
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); }
[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"); }
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"); }
[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"); }
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"); }
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")); } }
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); } }
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"); }
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); } } }
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); } }
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; }