mirror of
https://github.com/futurepress/epub.js.git
synced 2025-10-04 15:09:16 +02:00
81 lines
No EOL
3.3 KiB
JavaScript
81 lines
No EOL
3.3 KiB
JavaScript
// /demo/moby-dick/OPS/chapter_006.xhtml
|
|
// epubcfi(/6/24[xchapter_006]!4/2/14/1:0)
|
|
|
|
module('EPUB CFI');
|
|
|
|
asyncTest("Renderer Updates to new CFI", 1, function() {
|
|
var book = ePub('/demo/moby-dick/', { width: 400, height: 600 });
|
|
|
|
var render = book.renderTo("qunit-fixture");
|
|
|
|
var result = function(){
|
|
var displayed = book.gotoCfi("epubcfi(/6/24[xchapter_006]!4/2/14/1:0)");
|
|
displayed.then(function(){
|
|
equal( book.getCurrentLocationCfi(), "epubcfi(/6/24[xchapter_006]!4/2/14/1:0)", "Location is correct" );
|
|
start();
|
|
});
|
|
};
|
|
|
|
render.then(result);
|
|
});
|
|
|
|
asyncTest("Find CFI from href", 1, function() {
|
|
var book = ePub('/demo/moby-dick/', { width: 400, height: 600 });
|
|
|
|
var render = book.renderTo("qunit-fixture");
|
|
|
|
var result = function(){
|
|
var epubcfi = new EPUBJS.EpubCFI();
|
|
var generated = epubcfi.generateCfiFromHref("epigraph_001.xhtml#extracts", book);
|
|
generated.then(function(cfi){
|
|
equal( cfi, "epubcfi(/6/12[xepigraph_001]!4/2/8[extracts]/1:0)", "CFI generated" );
|
|
start();
|
|
});
|
|
};
|
|
|
|
render.then(result);
|
|
});
|
|
|
|
test("Parse CFIs", null, function() {
|
|
var epubcfi = new EPUBJS.EpubCFI();
|
|
var cfiOne = epubcfi.parse("epubcfi(/6/2[cover]!/6)");
|
|
|
|
equal(cfiOne.steps.length, 1, "One step");
|
|
equal(cfiOne.steps[0].type, "element", "Step type is element");
|
|
equal(cfiOne.steps[0].index, 2, "Step index is two");
|
|
});
|
|
|
|
test("Compare CFI's", null, function() {
|
|
var epubcfi = new EPUBJS.EpubCFI();
|
|
// equal(epubcfi.compare("epubcfi(/6/2[cover]!/4)", "epubcfi(/6/2[cover]!/4)"), 0, "equal");
|
|
|
|
// Spines
|
|
equal(epubcfi.compare("epubcfi(/6/4[cover]!/4)", "epubcfi(/6/2[cover]!/4)"), 1, "First spine is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/4[cover]!/4)", "epubcfi(/6/6[cover]!/4)"), -1, "Second spine is greater");
|
|
|
|
// First is deeper
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/8/2)", "epubcfi(/6/2[cover]!/6)"), 1, "First Element is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/2)", "epubcfi(/6/2[cover]!/6)"), -1, "Second Element is greater");
|
|
|
|
// Second is deeper
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/8/2)", "epubcfi(/6/2[cover]!/6/4/2/2)"), 1, "First Element is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/4)", "epubcfi(/6/2[cover]!/6/4/2/2)"), -1, "Second Element is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/6)", "epubcfi(/6/2[cover]!/4/6/8/1:0)"), -1, "Second");
|
|
|
|
// Same Depth
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/6/8)", "epubcfi(/6/2[cover]!/6/2)"), 1, "First Element is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/20)", "epubcfi(/6/2[cover]!/6/10)"), -1, "Second Element is greater");
|
|
|
|
// Text nodes
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/5)", "epubcfi(/6/2[cover]!/4/3)"), 1, "First TextNode is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/7)", "epubcfi(/6/2[cover]!/4/13)"), -1, "Second TextNode is greater");
|
|
|
|
// Char offset
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/5:1)", "epubcfi(/6/2[cover]!/4/5:0)"), 1, "First Char Offset is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/5:2)", "epubcfi(/6/2[cover]!/4/5:30)"), -1, "Second Char Offset is greater");
|
|
|
|
// Normal example
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/8/5:1)", "epubcfi(/6/2[cover]!/4/6/15:2)"), 1, "First Element is greater");
|
|
equal(epubcfi.compare("epubcfi(/6/2[cover]!/4/8/1:0)", "epubcfi(/6/2[cover]!/4/8/1:0)"), 0, "All Equal");
|
|
|
|
}) |