r2-shared-js
Version:
Readium 2 'shared' for NodeJS (TypeScript)
87 lines • 4.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const ava_1 = require("ava");
const debug_ = require("debug");
const fs = require("fs");
const jsonDiff = require("json-diff");
const path = require("path");
const media_overlay_1 = require("../src/models/media-overlay");
const publication_1 = require("../src/models/publication");
const publication_parser_1 = require("../src/parser/publication-parser");
const serializable_1 = require("r2-lcp-js/dist/es6-es2015/src/serializable");
const init_globals_1 = require("../src/init-globals");
(0, init_globals_1.initGlobalConverters_SHARED)();
(0, init_globals_1.initGlobalConverters_GENERIC)();
const debug = debug_("r2:shared#test");
function fn() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return Promise.resolve("foo");
});
}
(0, ava_1.default)("dummy async test", (t) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
debug("test ASYNC");
t.is(yield fn(), "foo");
}));
(0, ava_1.default)("SMIL clock values", (t) => {
t.plan(16);
t.is((0, media_overlay_1.timeStrToSeconds)("12.345"), 12.345);
t.is((0, media_overlay_1.timeStrToSeconds)("2345ms"), 2.345);
t.is((0, media_overlay_1.timeStrToSeconds)("345ms"), 0.345);
t.is((0, media_overlay_1.timeStrToSeconds)("7.75h"), 27900);
t.is((0, media_overlay_1.timeStrToSeconds)("76.2s"), 76.2);
t.is((0, media_overlay_1.timeStrToSeconds)("00:56.78"), 56.78);
t.is((0, media_overlay_1.timeStrToSeconds)("09:58"), 598);
t.is((0, media_overlay_1.timeStrToSeconds)("09.5:58"), 628);
t.is((0, media_overlay_1.timeStrToSeconds)("0:00:04"), 4);
t.is((0, media_overlay_1.timeStrToSeconds)("0:05:01.2"), 301.2);
t.is((0, media_overlay_1.timeStrToSeconds)("124:59:36"), 449976);
t.is((0, media_overlay_1.timeStrToSeconds)("5:34:31.396"), 20071.396);
t.is((0, media_overlay_1.timeStrToSeconds)("5:34.5:31.396"), 20101.396);
t.is((0, media_overlay_1.timeStrToSeconds)("7.5z"), 7.5);
t.is((0, media_overlay_1.timeStrToSeconds)("4:5:34:31.396"), 0);
t.is((0, media_overlay_1.timeStrToSeconds)(""), 0);
});
function delay(okay) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
return new Promise((resolve, _reject) => {
setTimeout(() => {
resolve(okay);
}, 1000);
});
});
}
(0, ava_1.default)("EPUB parsing (de)serialize roundtrip", (t) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
const dirPath = path.join(process.cwd(), "misc/epubs/");
const filePaths = fs.readdirSync(dirPath, { withFileTypes: true }).
filter((f) => f.isFile() && /\.epub3?$/i.test(f.name)).map((f) => path.join(dirPath, f.name));
for (const filePath of filePaths) {
debug("------------------------");
debug(filePath);
let pub;
try {
pub = yield (0, publication_parser_1.PublicationParsePromise)(filePath);
}
catch (err) {
console.log(err);
continue;
}
const publicationJson1 = (0, serializable_1.TaJsonSerialize)(pub);
const publication = (0, serializable_1.TaJsonDeserialize)(publicationJson1, publication_1.Publication);
const publicationJson2 = (0, serializable_1.TaJsonSerialize)(publication);
const str1 = JSON.stringify(publicationJson1, null, 2);
const str2 = JSON.stringify(publicationJson2, null, 2);
if (str1 !== str2) {
process.stdout.write("###########################\n");
process.stdout.write("###########################\n");
process.stdout.write("#### JSON DIFF\n");
process.stdout.write(jsonDiff.diffString(publicationJson1, publicationJson2) + "\n");
process.stdout.write("###########################\n");
process.stdout.write("###########################\n");
t.true(yield delay(false));
return;
}
}
t.true(yield delay(true));
}));
//# sourceMappingURL=test.js.map