Ejemplo n.º 1
0
        public void GetFilteredImageNameToPagesDictionary_AccumulatesCorrectly()
        {
            const string xhtml = @"
<body>
	<div class='bloom-page bloom-frontMatter cover' data-page-number=''>
		<div data-after-content='' class='pageLabel' lang='en'>
			Front Cover
		</div >
		<div class='marginBox'>
			<div class='bloom-translationGroup bookTitle'>
				<div class='bloom-editable' lang='fr'><p>french title</p></div>
				<div class='bloom-editable' lang='en'><p>Test leveled reader</p></div>
			</div>
			<div class='bloom-imageContainer bloom-backgroundImage' style='background-image:url(""AOR_aa013m.png"")'/>
		</div>
	</div>
	<div class='bloom-page bloom-frontMatter' data-page-number=''>
		<div data-after-content='' class='pageLabel' lang='en'>
			Credits Page
		</div >
		<div class='marginBox'>
			<div class='bloom-metaData licenseAndCopyrightBlock' lang='en'>
				<div class='copyright'>Some copyright</div>
				<div class='licenseBlock'>
					<img class='licenseImage' src='license.png'/>
				</div>
			</div>
			<div data-book='credits-page-bottom-branding'>
				<img src='foo.png'/>
			</div>
		</div>
	</div>
	<div class='bloom-page bloom-frontMatter countPageButDoNotShowNumber' data-page-number='1'>
		<div data-after-content='' class='pageLabel' lang='en'>
			Title Page
		</div >
		<div class='marginBox'>
			<div class='bloom-translationGroup' id='titlePageTitleBlock'></div>
			<div class='bloom-translationGroup' id='originalContributions'></div>
			<div class='bloom-translationGroup' id='funding'></div>
			<div data-book='title-page-branding-bottom'>
				<img src='blah.svg'/>
			</div>
		</div>
	</div>
	<div class='bloom-page numberedPage' lang='' data-page-number='2'>
		<div data-after-content='' class='pageLabel' lang='en'>
			Basic Text &amp; Picture
		</div >
		<div class='marginBox'>
<!-- extra 'split-pane' div layers removed here and elsewhere -->
			<div title='The Moon and The Cap_Page 041.jpg 105.32 KB 1500 x 1236 357 DPI (should be 300-600) Bit Depth: 24' class='bloom-imageContainer'>
				<img data-license='cc-by' data-creator='Angie and Upesh' data-copyright='Copyright © 2017, Pratham Books' src='The%20Moon%20and%20The%20Cap_Page%20041.jpg'/>
			</div>
			<div class='bloom-translationGroup'></div>
			<div class='bloom-imageContainer'>
				<img src='placeHolder.png'/>
			</div>
			<div class='bloom-imageContainer bloom-backgroundImage' style='background-image:url(""AOR_aa017m.png"")'/>
			<div class='bloom-translationGroup'></div>
			<div class='bloom-imageContainer bloom-backgroundImage' style='background-image:url(""AOR_aa013m.png"")'/>
		</div>
	</div>
	<div class='bloom-page numberedPage' lang='' data-page-number='3'>
		<div class='marginBox'>
			<div title='The Moon and The Cap_Page 041.jpg 105.32 KB 1500 x 1236 357 DPI (should be 300-600) Bit Depth: 24' class='bloom-imageContainer'>
				<img data-license='cc-by' data-creator='Angie and Upesh' data-copyright='Copyright © 2017, Pratham Books' src='The%20Moon%20and%20The%20Cap_Page%20041.jpg'/>
			</div>
			<div class='bloom-translationGroup'></div>
		</div>
	</div>
	<div class='bloom-page numberedPage' lang='' data-page-number='4'>
		<div class='marginBox'>
			<div class='bloom-translationGroup'></div>
			<div title='AOR_EAG00864.png 18.55 KB 564 x 457 273 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='Roel Ottow' data-copyright='Copyright, SIL International 2009.' src='AOR_EAG00864.png'/>
			</div>
			<div title='AOR_abbb007.png 84.21 KB 1136 x 1500 543 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='' data-copyright='Copyright, SIL International 2009.' src='AOR_abbb007.png'/>
			</div>
			<div class='bloom-translationGroup'></div>
			<div title='AOR_EAG00864.png 18.55 KB 564 x 457 273 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='Roel Ottow' data-copyright='Copyright, SIL International 2009.' src='AOR_EAG00864.png'/>
			</div>
			<div class='bloom-translationGroup'></div>
		</div>
	</div>
	<div class='bloom-page numberedPage' lang='' data-page-number='5'>
		<div class='marginBox'>
			<div class='bloom-translationGroup'></div>
			<div title='AOR_EAG00864.png 6.58 KB 341 x 335 209 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='Cathy Marlett' data-copyright='Copyright, SIL International 2009.' src='AOR_EAG00864.png'/>
			</div>
			<div title='AOR_ACC029M.png 83.35 KB 1500 x 806 382 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='Cathy Marlett' data-copyright='Copyright, SIL International 2009.' src='AOR_ACC029M.png'/>
			</div>
			<div class='bloom-translationGroup'></div>
		</div>
	</div>
<!-- We skip a bunch of pages here in order to test what happens when we jump past single digits,
	 but we aren't actually testing the code that creates the numbers here, so we should be fine. -->
	<div class='bloom-page numberedPage' lang='' data-page-number='10'>
		<div data-after-content='' class='pageLabel' lang='en'>
			Basic Text &amp; Picture
		</div >
		<div class='marginBox'>
			<div class='bloom-translationGroup'></div>
			<div title='AOR_EAG00864.png 6.58 KB 341 x 335 209 DPI (should be 300-600) Bit Depth: 32' class='bloom-imageContainer'>
				<img data-license='cc-by-nd' data-creator='Cathy Marlett' data-copyright='Copyright, SIL International 2009.' src='AOR_EAG00864.png'/>
			</div>
			<div class='bloom-translationGroup'></div>
			<div class='bloom-imageContainer bloom-backgroundImage' style='background-image:url(""AOR_aa018.png"")'/>
		</div>
	</div>
<!-- Is this what the page numbering system does with backMatter? No change in pagenum from here on out. -->
	<div class='bloom-page bloom-backMatter cover' data-page-number='10'>
		<div data-after-content='' class='pageLabel' lang='en'>
			Inside Back Cover
		</div >
		<div class='marginBox'>
			<div class='bloom-translationGroup'></div>
		</div>
	</div>
	<div class='bloom-page bloom-backMatter' data-page-number='10'>
		<div data-after-content='' class='pageLabel' lang='en'>
			Outside Back Cover
		</div >
		<div class='marginBox'>
			<div class='bloom-translationGroup'></div>
			<div class='bloom-imageContainer bloom-backgroundImage' style='background-image:url(""AOR_aa018.png"")'/>
			<div data-book='title-page-branding-bottom'>
				<img src='back-cover-outside-wide.png'/>
				<img src='back-cover-outside.svg' type='image/svg'/>
			</div>
		</div>
	</div>
</body>";

            var dom = new XmlDocument();

            dom.LoadXml(xhtml);
            var imageNameToPages = _apiObject.GetFilteredImageNameToPagesDictionary(dom.SelectSingleNode("//body"));

            Assert.AreEqual(7, imageNameToPages.Keys.Count, "Should be a total of 7 unique images");
            Assert.AreEqual("Front Cover", imageNameToPages["AOR_aa013m.png"].First(), "Should include xmatter pics");
            Assert.AreEqual("2", imageNameToPages["AOR_aa013m.png"].Last(), "Numbered pages should be after front matter");
            Assert.IsFalse(imageNameToPages.ContainsKey("title-page.svg"), "Branding images get filtered out");
            Assert.IsFalse(imageNameToPages.ContainsKey("credits-page-bottom.png"), "Branding images get filtered out");
            Assert.IsFalse(imageNameToPages.ContainsKey("back-cover-outside.svg"), "Branding images get filtered out");
            Assert.IsFalse(imageNameToPages.ContainsKey("back-cover-outside-wide.png"), "Branding images get filtered out");
            Assert.IsFalse(imageNameToPages.ContainsKey("placeHolder.png"), "Placeholder images get filtered out");
            Assert.IsTrue(imageNameToPages.ContainsKey("AOR_aa017m.png"), "Should include background images from numbered pages");
            Assert.IsTrue(imageNameToPages.ContainsKey("The Moon and The Cap_Page 041.jpg"), "Missing normal Moon and Cap image");
            var moonAndCap = imageNameToPages["The Moon and The Cap_Page 041.jpg"];

            Assert.AreEqual(2, moonAndCap.Count, "Wrong number of Moon and Cap images");
            Assert.AreEqual("2", moonAndCap.First());
            Assert.AreEqual("3", moonAndCap.Last());
            var aorEag = imageNameToPages["AOR_EAG00864.png"];

            Assert.AreEqual(3, aorEag.Count);
            Assert.AreEqual("4", aorEag.First(), "Should sort '4' before '5' and '10'");
            Assert.AreEqual("10", aorEag.Last(), "Should sort '10' after '5'");
            Assert.IsTrue(aorEag.Contains("5"), "'5' should be there in the middle");
            var backCvr = imageNameToPages["AOR_aa018.png"];

            Assert.AreEqual("10", backCvr.First(), "Page 10 image should report before back matter");
            Assert.AreEqual("Outside Back Cover", backCvr.Last(), "Back cover non-branding image should report Outside Back Cover");
        }