1
0
Fork 0
mirror of https://github.com/futurepress/epub.js.git synced 2025-10-04 15:09:16 +02:00
epub.js/tests/epubcfi.js
2014-03-14 18:50:28 -07:00

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");
})