Merge pull request #12528 from timvandermeij/test-unit-no-var

Convert `var` to `const`/`let` in the `test/unit` folder
This commit is contained in:
Tim van der Meij 2020-10-25 18:34:13 +01:00 committed by GitHub
commit 2251677e5a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 878 additions and 816 deletions

10
test/unit/.eslintrc Normal file
View File

@ -0,0 +1,10 @@
{
"extends": [
"../.eslintrc"
],
"rules": {
// ECMAScript 6
"no-var": "error",
},
}

View File

@ -72,7 +72,7 @@ describe("api", function () {
});
function waitSome(callback) {
var WAIT_TIMEOUT = 10;
const WAIT_TIMEOUT = 10;
setTimeout(function () {
callback();
}, WAIT_TIMEOUT);
@ -80,9 +80,9 @@ describe("api", function () {
describe("getDocument", function () {
it("creates pdf doc from URL", function (done) {
var loadingTask = getDocument(basicApiGetDocumentParams);
const loadingTask = getDocument(basicApiGetDocumentParams);
var progressReportedCapability = createPromiseCapability();
const progressReportedCapability = createPromiseCapability();
// Attach the callback that is used to report loading progress;
// similarly to how viewer.js works.
loadingTask.onProgress = function (progressData) {
@ -91,7 +91,10 @@ describe("api", function () {
}
};
var promises = [progressReportedCapability.promise, loadingTask.promise];
const promises = [
progressReportedCapability.promise,
loadingTask.promise,
];
Promise.all(promises)
.then(function (data) {
expect(data[0].loaded / data[0].total >= 0).toEqual(true);
@ -102,7 +105,7 @@ describe("api", function () {
.catch(done.fail);
});
it("creates pdf doc from URL and aborts before worker initialized", function (done) {
var loadingTask = getDocument(basicApiGetDocumentParams);
const loadingTask = getDocument(basicApiGetDocumentParams);
const destroyed = loadingTask.destroy();
loadingTask.promise
@ -115,10 +118,10 @@ describe("api", function () {
});
});
it("creates pdf doc from URL and aborts loading after worker initialized", function (done) {
var loadingTask = getDocument(basicApiGetDocumentParams);
const loadingTask = getDocument(basicApiGetDocumentParams);
// This can be somewhat random -- we cannot guarantee perfect
// 'Terminate' message to the worker before/after setting up pdfManager.
var destroyed = loadingTask._worker.promise.then(function () {
const destroyed = loadingTask._worker.promise.then(function () {
return loadingTask.destroy();
});
destroyed
@ -166,7 +169,7 @@ describe("api", function () {
});
it("creates pdf doc from invalid PDF file", function (done) {
// A severely corrupt PDF file (even Adobe Reader fails to open it).
var loadingTask = getDocument(buildGetDocumentParams("bug1020226.pdf"));
const loadingTask = getDocument(buildGetDocumentParams("bug1020226.pdf"));
loadingTask.promise
.then(function () {
done.fail("shall fail loading");
@ -179,7 +182,9 @@ describe("api", function () {
});
});
it("creates pdf doc from non-existent URL", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("non-existent.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("non-existent.pdf")
);
loadingTask.promise
.then(function (error) {
done.fail("shall fail loading");
@ -190,10 +195,10 @@ describe("api", function () {
});
});
it("creates pdf doc from PDF file protected with user and owner password", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("pr6531_1.pdf"));
const loadingTask = getDocument(buildGetDocumentParams("pr6531_1.pdf"));
var passwordNeededCapability = createPromiseCapability();
var passwordIncorrectCapability = createPromiseCapability();
const passwordNeededCapability = createPromiseCapability();
const passwordIncorrectCapability = createPromiseCapability();
// Attach the callback that is used to request a password;
// similarly to how viewer.js handles passwords.
loadingTask.onPassword = function (updatePassword, reason) {
@ -219,7 +224,7 @@ describe("api", function () {
expect(false).toEqual(true);
};
var promises = [
const promises = [
passwordNeededCapability.promise,
passwordIncorrectCapability.promise,
loadingTask.promise,
@ -232,14 +237,14 @@ describe("api", function () {
.catch(done.fail);
});
it("creates pdf doc from PDF file protected with only a user password", function (done) {
var filename = "pr6531_2.pdf";
const filename = "pr6531_2.pdf";
var passwordNeededLoadingTask = getDocument(
const passwordNeededLoadingTask = getDocument(
buildGetDocumentParams(filename, {
password: "",
})
);
var result1 = passwordNeededLoadingTask.promise.then(
const result1 = passwordNeededLoadingTask.promise.then(
function () {
done.fail("shall fail with no password");
return Promise.reject(new Error("loadingTask should be rejected"));
@ -251,12 +256,12 @@ describe("api", function () {
}
);
var passwordIncorrectLoadingTask = getDocument(
const passwordIncorrectLoadingTask = getDocument(
buildGetDocumentParams(filename, {
password: "qwerty",
})
);
var result2 = passwordIncorrectLoadingTask.promise.then(
const result2 = passwordIncorrectLoadingTask.promise.then(
function () {
done.fail("shall fail with wrong password");
return Promise.reject(new Error("loadingTask should be rejected"));
@ -268,12 +273,12 @@ describe("api", function () {
}
);
var passwordAcceptedLoadingTask = getDocument(
const passwordAcceptedLoadingTask = getDocument(
buildGetDocumentParams(filename, {
password: "asdfasdf",
})
);
var result3 = passwordAcceptedLoadingTask.promise.then(function (data) {
const result3 = passwordAcceptedLoadingTask.promise.then(function (data) {
expect(data instanceof PDFDocumentProxy).toEqual(true);
return passwordAcceptedLoadingTask.destroy();
});
@ -288,12 +293,12 @@ describe("api", function () {
"creates pdf doc from password protected PDF file and aborts/throws " +
"in the onPassword callback (issue 7806)",
function (done) {
var filename = "issue3371.pdf";
const filename = "issue3371.pdf";
var passwordNeededLoadingTask = getDocument(
const passwordNeededLoadingTask = getDocument(
buildGetDocumentParams(filename)
);
var passwordIncorrectLoadingTask = getDocument(
const passwordIncorrectLoadingTask = getDocument(
buildGetDocumentParams(filename, {
password: "qwerty",
})
@ -308,7 +313,7 @@ describe("api", function () {
// Shouldn't get here.
expect(false).toEqual(true);
};
var result1 = passwordNeededLoadingTask.promise.then(
const result1 = passwordNeededLoadingTask.promise.then(
function () {
done.fail("shall fail since the loadingTask should be destroyed");
return Promise.reject(new Error("loadingTask should be rejected"));
@ -327,7 +332,7 @@ describe("api", function () {
// Shouldn't get here.
expect(false).toEqual(true);
};
var result2 = passwordIncorrectLoadingTask.promise.then(
const result2 = passwordIncorrectLoadingTask.promise.then(
function () {
done.fail("shall fail since the onPassword callback should throw");
return Promise.reject(new Error("loadingTask should be rejected"));
@ -372,7 +377,7 @@ describe("api", function () {
pending("Worker is not supported in Node.js.");
}
var worker = new PDFWorker({ name: "test1" });
const worker = new PDFWorker({ name: "test1" });
worker.promise
.then(function () {
expect(worker.name).toEqual("test1");
@ -393,19 +398,19 @@ describe("api", function () {
pending("Worker is not supported in Node.js.");
}
var loadingTask = getDocument(basicApiGetDocumentParams);
var worker;
const loadingTask = getDocument(basicApiGetDocumentParams);
let worker;
loadingTask.promise.then(function () {
worker = loadingTask._worker;
expect(!!worker).toEqual(true);
});
var destroyPromise = loadingTask.promise.then(function () {
const destroyPromise = loadingTask.promise.then(function () {
return loadingTask.destroy();
});
destroyPromise
.then(function () {
var destroyedWorker = loadingTask._worker;
const destroyedWorker = loadingTask._worker;
expect(!!destroyedWorker).toEqual(false);
expect(worker.destroyed).toEqual(true);
done();
@ -417,21 +422,21 @@ describe("api", function () {
pending("Worker is not supported in Node.js.");
}
var worker = new PDFWorker({ name: "test1" });
var loadingTask = getDocument(
const worker = new PDFWorker({ name: "test1" });
const loadingTask = getDocument(
buildGetDocumentParams(basicApiFileName, {
worker,
})
);
loadingTask.promise.then(function () {
var docWorker = loadingTask._worker;
const docWorker = loadingTask._worker;
expect(!!docWorker).toEqual(false);
// checking is the same port is used in the MessageHandler
var messageHandlerPort = loadingTask._transport.messageHandler.comObj;
const messageHandlerPort = loadingTask._transport.messageHandler.comObj;
expect(messageHandlerPort === worker.port).toEqual(true);
});
var destroyPromise = loadingTask.promise.then(function () {
const destroyPromise = loadingTask.promise.then(function () {
return loadingTask.destroy();
});
destroyPromise
@ -447,10 +452,10 @@ describe("api", function () {
pending("Worker is not supported in Node.js.");
}
var worker1 = new PDFWorker({ name: "test1" });
var worker2 = new PDFWorker({ name: "test2" });
var worker3 = new PDFWorker({ name: "test3" });
var ready = Promise.all([
const worker1 = new PDFWorker({ name: "test1" });
const worker2 = new PDFWorker({ name: "test2" });
const worker3 = new PDFWorker({ name: "test3" });
const ready = Promise.all([
worker1.promise,
worker2.promise,
worker3.promise,
@ -503,7 +508,7 @@ describe("api", function () {
);
});
it("gets page", function (done) {
var promise = pdfDocument.getPage(1);
const promise = pdfDocument.getPage(1);
promise
.then(function (data) {
expect(data instanceof PDFPageProxy).toEqual(true);
@ -513,9 +518,9 @@ describe("api", function () {
.catch(done.fail);
});
it("gets non-existent page", function (done) {
var outOfRangePromise = pdfDocument.getPage(100);
var nonIntegerPromise = pdfDocument.getPage(2.5);
var nonNumberPromise = pdfDocument.getPage("1");
let outOfRangePromise = pdfDocument.getPage(100);
let nonIntegerPromise = pdfDocument.getPage(2.5);
let nonNumberPromise = pdfDocument.getPage("1");
outOfRangePromise = outOfRangePromise.then(
function () {
@ -587,8 +592,8 @@ describe("api", function () {
it("gets page index", function (done) {
// reference to second page
var ref = { num: 17, gen: 0 };
var promise = pdfDocument.getPageIndex(ref);
const ref = { num: 17, gen: 0 };
const promise = pdfDocument.getPageIndex(ref);
promise
.then(function (pageIndex) {
expect(pageIndex).toEqual(1);
@ -597,8 +602,8 @@ describe("api", function () {
.catch(done.fail);
});
it("gets invalid page index", function (done) {
var ref = { num: 3, gen: 0 }; // Reference to a font dictionary.
var promise = pdfDocument.getPageIndex(ref);
const ref = { num: 3, gen: 0 }; // Reference to a font dictionary.
const promise = pdfDocument.getPageIndex(ref);
promise
.then(function () {
done.fail("shall fail for invalid page reference.");
@ -610,7 +615,7 @@ describe("api", function () {
});
it("gets destinations, from /Dests dictionary", function (done) {
var promise = pdfDocument.getDestinations();
const promise = pdfDocument.getDestinations();
promise
.then(function (data) {
expect(data).toEqual({
@ -621,7 +626,7 @@ describe("api", function () {
.catch(done.fail);
});
it("gets a destination, from /Dests dictionary", function (done) {
var promise = pdfDocument.getDestination("chapter1");
const promise = pdfDocument.getDestination("chapter1");
promise
.then(function (data) {
expect(data).toEqual([
@ -636,7 +641,7 @@ describe("api", function () {
.catch(done.fail);
});
it("gets a non-existent destination, from /Dests dictionary", function (done) {
var promise = pdfDocument.getDestination(
const promise = pdfDocument.getDestination(
"non-existent-named-destination"
);
promise
@ -648,8 +653,8 @@ describe("api", function () {
});
it("gets destinations, from /Names (NameTree) dictionary", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
var promise = loadingTask.promise.then(function (pdfDoc) {
const loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getDestinations();
});
promise
@ -664,8 +669,8 @@ describe("api", function () {
.catch(done.fail);
});
it("gets a destination, from /Names (NameTree) dictionary", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
var promise = loadingTask.promise.then(function (pdfDoc) {
const loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getDestination("Page.1");
});
promise
@ -683,8 +688,8 @@ describe("api", function () {
.catch(done.fail);
});
it("gets a non-existent destination, from /Names (NameTree) dictionary", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
var promise = loadingTask.promise.then(function (pdfDoc) {
const loadingTask = getDocument(buildGetDocumentParams("issue6204.pdf"));
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getDestination("non-existent-named-destination");
});
promise
@ -739,7 +744,7 @@ describe("api", function () {
});
it("gets non-existent page labels", function (done) {
var promise = pdfDocument.getPageLabels();
const promise = pdfDocument.getPageLabels();
promise
.then(function (data) {
expect(data).toEqual(null);
@ -749,28 +754,28 @@ describe("api", function () {
});
it("gets page labels", function (done) {
// PageLabels with Roman/Arabic numerals.
var loadingTask0 = getDocument(buildGetDocumentParams("bug793632.pdf"));
var promise0 = loadingTask0.promise.then(function (pdfDoc) {
const loadingTask0 = getDocument(buildGetDocumentParams("bug793632.pdf"));
const promise0 = loadingTask0.promise.then(function (pdfDoc) {
return pdfDoc.getPageLabels();
});
// PageLabels with only a label prefix.
var loadingTask1 = getDocument(buildGetDocumentParams("issue1453.pdf"));
var promise1 = loadingTask1.promise.then(function (pdfDoc) {
const loadingTask1 = getDocument(buildGetDocumentParams("issue1453.pdf"));
const promise1 = loadingTask1.promise.then(function (pdfDoc) {
return pdfDoc.getPageLabels();
});
// PageLabels identical to standard page numbering.
var loadingTask2 = getDocument(buildGetDocumentParams("rotation.pdf"));
var promise2 = loadingTask2.promise.then(function (pdfDoc) {
const loadingTask2 = getDocument(buildGetDocumentParams("rotation.pdf"));
const promise2 = loadingTask2.promise.then(function (pdfDoc) {
return pdfDoc.getPageLabels();
});
// PageLabels with bad "Prefix" entries.
var loadingTask3 = getDocument(
const loadingTask3 = getDocument(
buildGetDocumentParams("bad-PageLabels.pdf")
);
var promise3 = loadingTask3.promise.then(function (pdfDoc) {
const promise3 = loadingTask3.promise.then(function (pdfDoc) {
return pdfDoc.getPageLabels();
});
@ -792,7 +797,9 @@ describe("api", function () {
});
it("gets default page layout", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
loadingTask.promise
.then(function (pdfDoc) {
@ -816,7 +823,9 @@ describe("api", function () {
});
it("gets default page mode", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
loadingTask.promise
.then(function (pdfDoc) {
@ -840,7 +849,9 @@ describe("api", function () {
});
it("gets default viewer preferences", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
loadingTask.promise
.then(function (pdfDoc) {
@ -866,7 +877,9 @@ describe("api", function () {
});
it("gets default open action", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
loadingTask.promise
.then(function (pdfDoc) {
@ -930,7 +943,7 @@ describe("api", function () {
});
it("gets non-existent attachments", function (done) {
var promise = pdfDocument.getAttachments();
const promise = pdfDocument.getAttachments();
promise
.then(function (data) {
expect(data).toEqual(null);
@ -939,13 +952,13 @@ describe("api", function () {
.catch(done.fail);
});
it("gets attachments", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("attachment.pdf"));
var promise = loadingTask.promise.then(function (pdfDoc) {
const loadingTask = getDocument(buildGetDocumentParams("attachment.pdf"));
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getAttachments();
});
promise
.then(function (data) {
var attachment = data["foo.txt"];
const attachment = data["foo.txt"];
expect(attachment.filename).toEqual("foo.txt");
expect(attachment.content).toEqual(
new Uint8Array([98, 97, 114, 32, 98, 97, 122, 32, 10])
@ -957,7 +970,7 @@ describe("api", function () {
});
it("gets javascript", function (done) {
var promise = pdfDocument.getJavaScript();
const promise = pdfDocument.getJavaScript();
promise
.then(function (data) {
expect(data).toEqual(null);
@ -967,8 +980,8 @@ describe("api", function () {
});
it("gets javascript with printing instructions (JS action)", function (done) {
// PDF document with "JavaScript" action in the OpenAction dictionary.
var loadingTask = getDocument(buildGetDocumentParams("issue6106.pdf"));
var promise = loadingTask.promise.then(function (pdfDoc) {
const loadingTask = getDocument(buildGetDocumentParams("issue6106.pdf"));
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getJavaScript();
});
promise
@ -983,9 +996,11 @@ describe("api", function () {
});
it("gets non-existent outline", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
var promise = loadingTask.promise.then(function (pdfDoc) {
const promise = loadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getOutline();
});
promise
@ -997,14 +1012,14 @@ describe("api", function () {
.catch(done.fail);
});
it("gets outline", function (done) {
var promise = pdfDocument.getOutline();
const promise = pdfDocument.getOutline();
promise
.then(function (outline) {
// Two top level entries.
expect(Array.isArray(outline)).toEqual(true);
expect(outline.length).toEqual(2);
// Make sure some basic attributes are set.
var outlineItem = outline[1];
const outlineItem = outline[1];
expect(outlineItem.title).toEqual("Chapter 1");
expect(Array.isArray(outlineItem.dest)).toEqual(true);
expect(outlineItem.url).toEqual(null);
@ -1024,7 +1039,7 @@ describe("api", function () {
.catch(done.fail);
});
it("gets outline containing a url", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("issue3214.pdf"));
const loadingTask = getDocument(buildGetDocumentParams("issue3214.pdf"));
loadingTask.promise
.then(function (pdfDoc) {
@ -1032,14 +1047,14 @@ describe("api", function () {
expect(Array.isArray(outline)).toEqual(true);
expect(outline.length).toEqual(5);
var outlineItemTwo = outline[2];
const outlineItemTwo = outline[2];
expect(typeof outlineItemTwo.title).toEqual("string");
expect(outlineItemTwo.dest).toEqual(null);
expect(outlineItemTwo.url).toEqual("http://google.com/");
expect(outlineItemTwo.unsafeUrl).toEqual("http://google.com");
expect(outlineItemTwo.newWindow).toBeUndefined();
var outlineItemOne = outline[1];
const outlineItemOne = outline[1];
expect(outlineItemOne.bold).toEqual(false);
expect(outlineItemOne.italic).toEqual(true);
expect(outlineItemOne.color).toEqual(
@ -1115,7 +1130,7 @@ describe("api", function () {
});
it("gets metadata", function (done) {
var promise = pdfDocument.getMetadata();
const promise = pdfDocument.getMetadata();
promise
.then(function ({ info, metadata, contentDispositionFilename }) {
expect(info.Title).toEqual("Basic API Test");
@ -1137,7 +1152,9 @@ describe("api", function () {
.catch(done.fail);
});
it("gets metadata, with custom info dict entries", function (done) {
var loadingTask = getDocument(buildGetDocumentParams("tracemonkey.pdf"));
const loadingTask = getDocument(
buildGetDocumentParams("tracemonkey.pdf")
);
loadingTask.promise
.then(function (pdfDoc) {
@ -1193,7 +1210,7 @@ describe("api", function () {
});
it("gets data", function (done) {
var promise = pdfDocument.getData();
const promise = pdfDocument.getData();
promise
.then(function (data) {
expect(data instanceof Uint8Array).toEqual(true);
@ -1203,7 +1220,7 @@ describe("api", function () {
.catch(done.fail);
});
it("gets download info", function (done) {
var promise = pdfDocument.getDownloadInfo();
const promise = pdfDocument.getDownloadInfo();
promise
.then(function (data) {
expect(data).toEqual({ length: basicApiFileLength });
@ -1212,7 +1229,7 @@ describe("api", function () {
.catch(done.fail);
});
it("gets document stats", function (done) {
var promise = pdfDocument.getStats();
const promise = pdfDocument.getStats();
promise
.then(function (stats) {
expect(stats).toEqual({ streamTypes: {}, fontTypes: {} });
@ -1253,13 +1270,13 @@ describe("api", function () {
});
describe("Cross-origin", function () {
var loadingTask;
let loadingTask;
function _checkCanLoad(expectSuccess, filename, options) {
if (isNodeJS) {
pending("Cannot simulate cross-origin requests in Node.js");
}
var params = buildGetDocumentParams(filename, options);
var url = new URL(params.url);
const params = buildGetDocumentParams(filename, options);
const url = new URL(params.url);
if (url.hostname === "localhost") {
url.hostname = "127.0.0.1";
} else if (params.url.hostname === "127.0.0.1") {
@ -1396,7 +1413,7 @@ describe("api", function () {
});
it("gets viewport", function () {
var viewport = page.getViewport({ scale: 1.5, rotation: 90 });
const viewport = page.getViewport({ scale: 1.5, rotation: 90 });
expect(viewport.viewBox).toEqual(page.view);
expect(viewport.scale).toEqual(1.5);
expect(viewport.rotation).toEqual(90);
@ -1440,17 +1457,17 @@ describe("api", function () {
});
it("gets annotations", function (done) {
var defaultPromise = page.getAnnotations().then(function (data) {
const defaultPromise = page.getAnnotations().then(function (data) {
expect(data.length).toEqual(4);
});
var displayPromise = page
const displayPromise = page
.getAnnotations({ intent: "display" })
.then(function (data) {
expect(data.length).toEqual(4);
});
var printPromise = page
const printPromise = page
.getAnnotations({ intent: "print" })
.then(function (data) {
expect(data.length).toEqual(4);
@ -1463,21 +1480,21 @@ describe("api", function () {
});
it("gets annotations containing relative URLs (bug 766086)", function (done) {
var filename = "bug766086.pdf";
const filename = "bug766086.pdf";
var defaultLoadingTask = getDocument(buildGetDocumentParams(filename));
var defaultPromise = defaultLoadingTask.promise.then(function (pdfDoc) {
const defaultLoadingTask = getDocument(buildGetDocumentParams(filename));
const defaultPromise = defaultLoadingTask.promise.then(function (pdfDoc) {
return pdfDoc.getPage(1).then(function (pdfPage) {
return pdfPage.getAnnotations();
});
});
var docBaseUrlLoadingTask = getDocument(
const docBaseUrlLoadingTask = getDocument(
buildGetDocumentParams(filename, {
docBaseUrl: "http://www.example.com/test/pdfs/qwerty.pdf",
})
);
var docBaseUrlPromise = docBaseUrlLoadingTask.promise.then(function (
const docBaseUrlPromise = docBaseUrlLoadingTask.promise.then(function (
pdfDoc
) {
return pdfDoc.getPage(1).then(function (pdfPage) {
@ -1485,12 +1502,12 @@ describe("api", function () {
});
});
var invalidDocBaseUrlLoadingTask = getDocument(
const invalidDocBaseUrlLoadingTask = getDocument(
buildGetDocumentParams(filename, {
docBaseUrl: "qwerty.pdf",
})
);
var invalidDocBaseUrlPromise = invalidDocBaseUrlLoadingTask.promise.then(
const invalidDocBaseUrlPromise = invalidDocBaseUrlLoadingTask.promise.then(
function (pdfDoc) {
return pdfDoc.getPage(1).then(function (pdfPage) {
return pdfPage.getAnnotations();
@ -1500,9 +1517,9 @@ describe("api", function () {
Promise.all([defaultPromise, docBaseUrlPromise, invalidDocBaseUrlPromise])
.then(function (data) {
var defaultAnnotations = data[0];
var docBaseUrlAnnotations = data[1];
var invalidDocBaseUrlAnnotations = data[2];
const defaultAnnotations = data[0];
const docBaseUrlAnnotations = data[1];
const invalidDocBaseUrlAnnotations = data[2];
expect(defaultAnnotations[0].url).toBeUndefined();
expect(defaultAnnotations[0].unsafeUrl).toEqual(
@ -1531,13 +1548,13 @@ describe("api", function () {
});
it("gets text content", function (done) {
var defaultPromise = page.getTextContent();
var parametersPromise = page.getTextContent({
const defaultPromise = page.getTextContent();
const parametersPromise = page.getTextContent({
normalizeWhitespace: true,
disableCombineTextItems: true,
});
var promises = [defaultPromise, parametersPromise];
const promises = [defaultPromise, parametersPromise];
Promise.all(promises)
.then(function (data) {
expect(!!data[0].items).toEqual(true);
@ -1586,7 +1603,7 @@ describe("api", function () {
});
it("gets operator list", function (done) {
var promise = page.getOperatorList();
const promise = page.getOperatorList();
promise
.then(function (oplist) {
expect(!!oplist.fnArray).toEqual(true);
@ -1662,12 +1679,12 @@ describe("api", function () {
);
it("gets document stats after parsing page", function (done) {
var promise = page.getOperatorList().then(function () {
const promise = page.getOperatorList().then(function () {
return pdfDocument.getStats();
});
var expectedStreamTypes = {};
const expectedStreamTypes = {};
expectedStreamTypes[StreamType.FLATE] = true;
var expectedFontTypes = {};
const expectedFontTypes = {};
expectedFontTypes[FontType.TYPE1] = true;
expectedFontTypes[FontType.CIDFONTTYPE2] = true;
@ -1764,10 +1781,13 @@ describe("api", function () {
});
it("cancels rendering of page", function (done) {
var viewport = page.getViewport({ scale: 1 });
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const viewport = page.getViewport({ scale: 1 });
const canvasAndCtx = CanvasFactory.create(
viewport.width,
viewport.height
);
var renderTask = page.render({
const renderTask = page.render({
canvasContext: canvasAndCtx.context,
canvasFactory: CanvasFactory,
viewport,
@ -1828,16 +1848,19 @@ describe("api", function () {
it("multiple render() on the same canvas", function (done) {
const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
var viewport = page.getViewport({ scale: 1 });
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const viewport = page.getViewport({ scale: 1 });
const canvasAndCtx = CanvasFactory.create(
viewport.width,
viewport.height
);
var renderTask1 = page.render({
const renderTask1 = page.render({
canvasContext: canvasAndCtx.context,
canvasFactory: CanvasFactory,
viewport,
optionalContentConfigPromise,
});
var renderTask2 = page.render({
const renderTask2 = page.render({
canvasContext: canvasAndCtx.context,
canvasFactory: CanvasFactory,
viewport,
@ -2016,12 +2039,12 @@ describe("api", function () {
describe("Multiple `getDocument` instances", function () {
// Regression test for https://github.com/mozilla/pdf.js/issues/6205
// A PDF using the Helvetica font.
var pdf1 = buildGetDocumentParams("tracemonkey.pdf");
const pdf1 = buildGetDocumentParams("tracemonkey.pdf");
// A PDF using the Times font.
var pdf2 = buildGetDocumentParams("TAMReview.pdf");
const pdf2 = buildGetDocumentParams("TAMReview.pdf");
// A PDF using the Arial font.
var pdf3 = buildGetDocumentParams("issue6068.pdf");
var loadingTasks = [];
const pdf3 = buildGetDocumentParams("issue6068.pdf");
const loadingTasks = [];
// Render the first page of the given PDF file.
// Fulfills the promise with the base64-encoded version of the PDF.
@ -2057,8 +2080,8 @@ describe("api", function () {
});
it("should correctly render PDFs in parallel", function (done) {
var baseline1, baseline2, baseline3;
var promiseDone = renderPDF(pdf1)
let baseline1, baseline2, baseline3;
const promiseDone = renderPDF(pdf1)
.then(function (data1) {
baseline1 = data1;
return renderPDF(pdf2);

View File

@ -18,18 +18,18 @@ import { bidi } from "../../src/core/bidi.js";
describe("bidi", function () {
it("should mark text as RTL if more than 30% of text is RTL", function () {
// 33% of test text are RTL characters
var test = "\u0645\u0635\u0631 Egypt";
var result = "Egypt \u0631\u0635\u0645";
var bidiText = bidi(test, -1, false);
const test = "\u0645\u0635\u0631 Egypt";
const result = "Egypt \u0631\u0635\u0645";
const bidiText = bidi(test, -1, false);
expect(bidiText.str).toEqual(result);
expect(bidiText.dir).toEqual("rtl");
});
it("should mark text as LTR if less than 30% of text is RTL", function () {
var test = "Egypt is known as \u0645\u0635\u0631 in Arabic.";
var result = "Egypt is known as \u0631\u0635\u0645 in Arabic.";
var bidiText = bidi(test, -1, false);
const test = "Egypt is known as \u0645\u0635\u0631 in Arabic.";
const result = "Egypt is known as \u0631\u0635\u0645 in Arabic.";
const bidiText = bidi(test, -1, false);
expect(bidiText.str).toEqual(result);
expect(bidiText.dir).toEqual("ltr");

View File

@ -25,26 +25,26 @@ import { Stream } from "../../src/core/stream.js";
describe("CFFParser", function () {
function createWithNullProto(obj) {
var result = Object.create(null);
for (var i in obj) {
const result = Object.create(null);
for (const i in obj) {
result[i] = obj[i];
}
return result;
}
// Stub that returns `0` for any privateDict key.
var privateDictStub = {
const privateDictStub = {
getByName(name) {
return 0;
},
};
var fontData, parser, cff;
let fontData, parser, cff;
beforeAll(function (done) {
// This example font comes from the CFF spec:
// http://www.adobe.com/content/dam/Adobe/en/devnet/font/pdfs/5176.CFF.pdf
var exampleFont =
const exampleFont =
"0100040100010101134142434445462b" +
"54696d65732d526f6d616e000101011f" +
"f81b00f81c02f81d03f819041c6f000d" +
@ -55,9 +55,9 @@ describe("CFFParser", function () {
"8b06f79a93fc7c8c077d99f85695f75e" +
"9908fb6e8cf87393f7108b09a70adf0b" +
"f78e14";
var fontArr = [];
for (var i = 0, ii = exampleFont.length; i < ii; i += 2) {
var hex = exampleFont.substring(i, i + 2);
const fontArr = [];
for (let i = 0, ii = exampleFont.length; i < ii; i += 2) {
const hex = exampleFont.substring(i, i + 2);
fontArr.push(parseInt(hex, 16));
}
fontData = new Stream(fontArr);
@ -80,7 +80,7 @@ describe("CFFParser", function () {
});
it("parses header", function () {
var header = cff.header;
const header = cff.header;
expect(header.major).toEqual(1);
expect(header.minor).toEqual(0);
expect(header.hdrSize).toEqual(4);
@ -88,20 +88,20 @@ describe("CFFParser", function () {
});
it("parses name index", function () {
var names = cff.names;
const names = cff.names;
expect(names.length).toEqual(1);
expect(names[0]).toEqual("ABCDEF+Times-Roman");
});
it("parses string index", function () {
var strings = cff.strings;
const strings = cff.strings;
expect(strings.count).toEqual(3);
expect(strings.get(0)).toEqual(".notdef");
expect(strings.get(391)).toEqual("001.007");
});
it("parses top dict", function () {
var topDict = cff.topDict;
const topDict = cff.topDict;
// 391 version 392 FullName 393 FamilyName 389 Weight 28416 UniqueID
// -168 -218 1000 898 FontBBox 94 CharStrings 45 102 Private
expect(topDict.getByName("version")).toEqual(391);
@ -115,8 +115,8 @@ describe("CFFParser", function () {
});
it("refuses to add topDict key with invalid value (bug 1068432)", function () {
var topDict = cff.topDict;
var defaultValue = topDict.getByName("UnderlinePosition");
const topDict = cff.topDict;
const defaultValue = topDict.getByName("UnderlinePosition");
topDict.setByKey(/* [12, 3] = */ 3075, [NaN]);
expect(topDict.getByName("UnderlinePosition")).toEqual(defaultValue);
@ -127,26 +127,26 @@ describe("CFFParser", function () {
"keys with invalid values (bug 1308536)",
function () {
// prettier-ignore
var bytes = new Uint8Array([
const bytes = new Uint8Array([
64, 39, 31, 30, 252, 114, 137, 115, 79, 30, 197, 119, 2, 99, 127, 6
]);
parser.bytes = bytes;
var topDict = cff.topDict;
const topDict = cff.topDict;
topDict.setByName("Private", [bytes.length, 0]);
var parsePrivateDict = function () {
const parsePrivateDict = function () {
parser.parsePrivateDict(topDict);
};
expect(parsePrivateDict).not.toThrow();
var privateDict = topDict.privateDict;
const privateDict = topDict.privateDict;
expect(privateDict.getByName("BlueValues")).toBeNull();
}
);
it("parses a CharString having cntrmask", function () {
// prettier-ignore
var bytes = new Uint8Array([0, 1, // count
const bytes = new Uint8Array([0, 1, // count
1, // offsetSize
0, // offset[0]
38, // end
@ -161,8 +161,8 @@ describe("CFFParser", function () {
14 // endchar
]);
parser.bytes = bytes;
var charStringsIndex = parser.parseIndex(0).obj;
var charStrings = parser.parseCharStrings({
const charStringsIndex = parser.parseIndex(0).obj;
const charStrings = parser.parseCharStrings({
charStrings: charStringsIndex,
privateDict: privateDictStub,
}).charStrings;
@ -180,13 +180,13 @@ describe("CFFParser", function () {
cffParser.parse(); // cff
// prettier-ignore
var bytes = new Uint8Array([0, 1, // count
const bytes = new Uint8Array([0, 1, // count
1, // offsetSize
0, // offset[0]
237, 247, 22, 247, 72, 204, 247, 86, 14]);
cffParser.bytes = bytes;
var charStringsIndex = cffParser.parseIndex(0).obj;
var result = cffParser.parseCharStrings({
const charStringsIndex = cffParser.parseIndex(0).obj;
const result = cffParser.parseCharStrings({
charStrings: charStringsIndex,
privateDict: privateDictStub,
});
@ -209,13 +209,13 @@ describe("CFFParser", function () {
cffParser.parse(); // cff
// prettier-ignore
var bytes = new Uint8Array([0, 1, // count
const bytes = new Uint8Array([0, 1, // count
1, // offsetSize
0, // offset[0]
237, 247, 22, 247, 72, 204, 247, 86, 14]);
cffParser.bytes = bytes;
var charStringsIndex = cffParser.parseIndex(0).obj;
var result = cffParser.parseCharStrings({
const charStringsIndex = cffParser.parseIndex(0).obj;
const result = cffParser.parseCharStrings({
charStrings: charStringsIndex,
privateDict: privateDictStub,
});
@ -226,13 +226,13 @@ describe("CFFParser", function () {
it("parses a CharString endchar no args", function () {
// prettier-ignore
var bytes = new Uint8Array([0, 1, // count
const bytes = new Uint8Array([0, 1, // count
1, // offsetSize
0, // offset[0]
14]);
parser.bytes = bytes;
var charStringsIndex = parser.parseIndex(0).obj;
var result = parser.parseCharStrings({
const charStringsIndex = parser.parseIndex(0).obj;
const result = parser.parseCharStrings({
charStrings: charStringsIndex,
privateDict: privateDictStub,
});
@ -242,19 +242,19 @@ describe("CFFParser", function () {
});
it("parses predefined charsets", function () {
var charset = parser.parseCharsets(0, 0, null, true);
const charset = parser.parseCharsets(0, 0, null, true);
expect(charset.predefined).toEqual(true);
});
it("parses charset format 0", function () {
// The first three bytes make the offset large enough to skip predefined.
// prettier-ignore
var bytes = new Uint8Array([0x00, 0x00, 0x00,
const bytes = new Uint8Array([0x00, 0x00, 0x00,
0x00, // format
0x00, 0x02 // sid/cid
]);
parser.bytes = bytes;
var charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
let charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
expect(charset.charset[1]).toEqual("exclam");
// CID font
@ -265,13 +265,13 @@ describe("CFFParser", function () {
it("parses charset format 1", function () {
// The first three bytes make the offset large enough to skip predefined.
// prettier-ignore
var bytes = new Uint8Array([0x00, 0x00, 0x00,
const bytes = new Uint8Array([0x00, 0x00, 0x00,
0x01, // format
0x00, 0x08, // sid/cid start
0x01 // sid/cid left
]);
parser.bytes = bytes;
var charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
let charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
expect(charset.charset).toEqual([".notdef", "quoteright", "parenleft"]);
// CID font
@ -283,13 +283,13 @@ describe("CFFParser", function () {
// format 2 is the same as format 1 but the left is card16
// The first three bytes make the offset large enough to skip predefined.
// prettier-ignore
var bytes = new Uint8Array([0x00, 0x00, 0x00,
const bytes = new Uint8Array([0x00, 0x00, 0x00,
0x02, // format
0x00, 0x08, // sid/cid start
0x00, 0x01 // sid/cid left
]);
parser.bytes = bytes;
var charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
let charset = parser.parseCharsets(3, 2, new CFFStrings(), false);
expect(charset.charset).toEqual([".notdef", "quoteright", "parenleft"]);
// CID font
@ -300,27 +300,27 @@ describe("CFFParser", function () {
it("parses encoding format 0", function () {
// The first two bytes make the offset large enough to skip predefined.
// prettier-ignore
var bytes = new Uint8Array([0x00, 0x00,
const bytes = new Uint8Array([0x00, 0x00,
0x00, // format
0x01, // count
0x08 // start
]);
parser.bytes = bytes;
var encoding = parser.parseEncoding(2, {}, new CFFStrings(), null);
const encoding = parser.parseEncoding(2, {}, new CFFStrings(), null);
expect(encoding.encoding).toEqual(createWithNullProto({ 0x8: 1 }));
});
it("parses encoding format 1", function () {
// The first two bytes make the offset large enough to skip predefined.
// prettier-ignore
var bytes = new Uint8Array([0x00, 0x00,
const bytes = new Uint8Array([0x00, 0x00,
0x01, // format
0x01, // num ranges
0x07, // range1 start
0x01 // range2 left
]);
parser.bytes = bytes;
var encoding = parser.parseEncoding(2, {}, new CFFStrings(), null);
const encoding = parser.parseEncoding(2, {}, new CFFStrings(), null);
expect(encoding.encoding).toEqual(
createWithNullProto({ 0x7: 0x01, 0x08: 0x02 })
);
@ -328,12 +328,12 @@ describe("CFFParser", function () {
it("parses fdselect format 0", function () {
// prettier-ignore
var bytes = new Uint8Array([0x00, // format
const bytes = new Uint8Array([0x00, // format
0x00, // gid: 0 fd: 0
0x01 // gid: 1 fd: 1
]);
parser.bytes = bytes.slice();
var fdSelect = parser.parseFDSelect(0, 2);
const fdSelect = parser.parseFDSelect(0, 2);
expect(fdSelect.fdSelect).toEqual([0, 1]);
expect(fdSelect.format).toEqual(0);
@ -341,7 +341,7 @@ describe("CFFParser", function () {
it("parses fdselect format 3", function () {
// prettier-ignore
var bytes = new Uint8Array([0x03, // format
const bytes = new Uint8Array([0x03, // format
0x00, 0x02, // range count
0x00, 0x00, // first gid
0x09, // font dict 1 id
@ -350,7 +350,7 @@ describe("CFFParser", function () {
0x00, 0x04 // sentinel (last gid)
]);
parser.bytes = bytes.slice();
var fdSelect = parser.parseFDSelect(0, 4);
const fdSelect = parser.parseFDSelect(0, 4);
expect(fdSelect.fdSelect).toEqual([9, 9, 0xa, 0xa]);
expect(fdSelect.format).toEqual(3);
@ -358,7 +358,7 @@ describe("CFFParser", function () {
it("parses invalid fdselect format 3 (bug 1146106)", function () {
// prettier-ignore
var bytes = new Uint8Array([0x03, // format
const bytes = new Uint8Array([0x03, // format
0x00, 0x02, // range count
0x00, 0x01, // first gid (invalid)
0x09, // font dict 1 id
@ -367,7 +367,7 @@ describe("CFFParser", function () {
0x00, 0x04 // sentinel (last gid)
]);
parser.bytes = bytes.slice();
var fdSelect = parser.parseFDSelect(0, 4);
const fdSelect = parser.parseFDSelect(0, 4);
expect(fdSelect.fdSelect).toEqual([9, 9, 0xa, 0xa]);
expect(fdSelect.format).toEqual(3);
@ -391,7 +391,7 @@ describe("CFFCompiler", function () {
}
it("encodes integers", function () {
var c = new CFFCompiler();
const c = new CFFCompiler();
// all the examples from the spec
expect(c.encodeInteger(0)).toEqual([0x8b]);
expect(c.encodeInteger(100)).toEqual([0xef]);
@ -405,21 +405,21 @@ describe("CFFCompiler", function () {
});
it("encodes floats", function () {
var c = new CFFCompiler();
const c = new CFFCompiler();
expect(c.encodeFloat(-2.25)).toEqual([0x1e, 0xe2, 0xa2, 0x5f]);
expect(c.encodeFloat(5e-11)).toEqual([0x1e, 0x5c, 0x11, 0xff]);
});
it("sanitizes name index", function () {
var c = new CFFCompiler();
var nameIndexCompiled = c.compileNameIndex(["[a"]);
var parser = testParser(nameIndexCompiled);
var nameIndex = parser.parseIndex(0);
var names = parser.parseNameIndex(nameIndex.obj);
const c = new CFFCompiler();
let nameIndexCompiled = c.compileNameIndex(["[a"]);
let parser = testParser(nameIndexCompiled);
let nameIndex = parser.parseIndex(0);
let names = parser.parseNameIndex(nameIndex.obj);
expect(names).toEqual(["_a"]);
var longName = "";
for (var i = 0; i < 129; i++) {
let longName = "";
for (let i = 0; i < 129; i++) {
longName += "_";
}
nameIndexCompiled = c.compileNameIndex([longName]);
@ -430,9 +430,9 @@ describe("CFFCompiler", function () {
});
it("compiles fdselect format 0", function () {
var fdSelect = new CFFFDSelect(0, [3, 2, 1]);
var c = new CFFCompiler();
var out = c.compileFDSelect(fdSelect);
const fdSelect = new CFFFDSelect(0, [3, 2, 1]);
const c = new CFFCompiler();
const out = c.compileFDSelect(fdSelect);
expect(out).toEqual([
0, // format
3, // gid: 0 fd 3
@ -442,9 +442,9 @@ describe("CFFCompiler", function () {
});
it("compiles fdselect format 3", function () {
var fdSelect = new CFFFDSelect(3, [0, 0, 1, 1]);
var c = new CFFCompiler();
var out = c.compileFDSelect(fdSelect);
const fdSelect = new CFFFDSelect(3, [0, 0, 1, 1]);
const c = new CFFCompiler();
const out = c.compileFDSelect(fdSelect);
expect(out).toEqual([
3, // format
0, // nRanges (high)
@ -461,9 +461,9 @@ describe("CFFCompiler", function () {
});
it("compiles fdselect format 3, single range", function () {
var fdSelect = new CFFFDSelect(3, [0, 0]);
var c = new CFFCompiler();
var out = c.compileFDSelect(fdSelect);
const fdSelect = new CFFFDSelect(3, [0, 0]);
const c = new CFFCompiler();
const out = c.compileFDSelect(fdSelect);
expect(out).toEqual([
3, // format
0, // nRanges (high)
@ -477,10 +477,10 @@ describe("CFFCompiler", function () {
});
it("compiles charset of CID font", function () {
var charset = new CFFCharset();
var c = new CFFCompiler();
var numGlyphs = 7;
var out = c.compileCharset(charset, numGlyphs, new CFFStrings(), true);
const charset = new CFFCharset();
const c = new CFFCompiler();
const numGlyphs = 7;
const out = c.compileCharset(charset, numGlyphs, new CFFStrings(), true);
// All CID charsets get turned into a simple format 2.
expect(out).toEqual([
2, // format
@ -492,10 +492,10 @@ describe("CFFCompiler", function () {
});
it("compiles charset of non CID font", function () {
var charset = new CFFCharset(false, 0, ["space", "exclam"]);
var c = new CFFCompiler();
var numGlyphs = 3;
var out = c.compileCharset(charset, numGlyphs, new CFFStrings(), false);
const charset = new CFFCharset(false, 0, ["space", "exclam"]);
const c = new CFFCompiler();
const numGlyphs = 3;
const out = c.compileCharset(charset, numGlyphs, new CFFStrings(), false);
// All non-CID fonts use a format 0 charset.
expect(out).toEqual([
0, // format

View File

@ -20,18 +20,18 @@ import { Name } from "../../src/core/primitives.js";
import { NodeCMapReaderFactory } from "../../src/display/node_utils.js";
import { StringStream } from "../../src/core/stream.js";
var cMapUrl = {
const cMapUrl = {
dom: "../../external/bcmaps/",
node: "./external/bcmaps/",
};
var cMapPacked = true;
const cMapPacked = true;
describe("cmap", function () {
var fetchBuiltInCMap;
let fetchBuiltInCMap;
beforeAll(function (done) {
// Allow CMap testing in Node.js, e.g. for Travis.
var CMapReaderFactory;
let CMapReaderFactory;
if (isNodeJS) {
CMapReaderFactory = new NodeCMapReaderFactory({
baseUrl: cMapUrl.node,
@ -58,12 +58,12 @@ describe("cmap", function () {
it("parses beginbfchar", function (done) {
// prettier-ignore
var str = "2 beginbfchar\n" +
const str = "2 beginbfchar\n" +
"<03> <00>\n" +
"<04> <01>\n" +
"endbfchar\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.lookup(0x03)).toEqual(String.fromCharCode(0x00));
@ -77,11 +77,11 @@ describe("cmap", function () {
});
it("parses beginbfrange with range", function (done) {
// prettier-ignore
var str = "1 beginbfrange\n" +
const str = "1 beginbfrange\n" +
"<06> <0B> 0\n" +
"endbfrange\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.lookup(0x05)).toBeUndefined();
@ -96,11 +96,11 @@ describe("cmap", function () {
});
it("parses beginbfrange with array", function (done) {
// prettier-ignore
var str = "1 beginbfrange\n" +
const str = "1 beginbfrange\n" +
"<0D> <12> [ 0 1 2 3 4 5 ]\n" +
"endbfrange\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.lookup(0x0c)).toBeUndefined();
@ -115,11 +115,11 @@ describe("cmap", function () {
});
it("parses begincidchar", function (done) {
// prettier-ignore
var str = "1 begincidchar\n" +
const str = "1 begincidchar\n" +
"<14> 0\n" +
"endcidchar\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.lookup(0x14)).toEqual(0x00);
@ -132,11 +132,11 @@ describe("cmap", function () {
});
it("parses begincidrange", function (done) {
// prettier-ignore
var str = "1 begincidrange\n" +
const str = "1 begincidrange\n" +
"<0016> <001B> 0\n" +
"endcidrange\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.lookup(0x15)).toBeUndefined();
@ -151,15 +151,15 @@ describe("cmap", function () {
});
it("decodes codespace ranges", function (done) {
// prettier-ignore
var str = "1 begincodespacerange\n" +
const str = "1 begincodespacerange\n" +
"<01> <02>\n" +
"<00000003> <00000004>\n" +
"endcodespacerange\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
var c = {};
const c = {};
cmap.readCharCode(String.fromCharCode(1), 0, c);
expect(c.charcode).toEqual(1);
expect(c.length).toEqual(1);
@ -174,14 +174,14 @@ describe("cmap", function () {
});
it("decodes 4 byte codespace ranges", function (done) {
// prettier-ignore
var str = "1 begincodespacerange\n" +
const str = "1 begincodespacerange\n" +
"<8EA1A1A1> <8EA1FEFE>\n" +
"endcodespacerange\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
var c = {};
const c = {};
cmap.readCharCode(String.fromCharCode(0x8e, 0xa1, 0xa1, 0xa1), 0, c);
expect(c.charcode).toEqual(0x8ea1a1a1);
expect(c.length).toEqual(4);
@ -192,9 +192,9 @@ describe("cmap", function () {
});
});
it("read usecmap", function (done) {
var str = "/Adobe-Japan1-1 usecmap\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({
const str = "/Adobe-Japan1-1 usecmap\n";
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({
encoding: stream,
fetchBuiltInCMap,
useCMap: null,
@ -213,9 +213,9 @@ describe("cmap", function () {
});
});
it("parses cmapname", function (done) {
var str = "/CMapName /Identity-H def\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const str = "/CMapName /Identity-H def\n";
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.name).toEqual("Identity-H");
@ -226,9 +226,9 @@ describe("cmap", function () {
});
});
it("parses wmode", function (done) {
var str = "/WMode 1 def\n";
var stream = new StringStream(str);
var cmapPromise = CMapFactory.create({ encoding: stream });
const str = "/WMode 1 def\n";
const stream = new StringStream(str);
const cmapPromise = CMapFactory.create({ encoding: stream });
cmapPromise
.then(function (cmap) {
expect(cmap.vertical).toEqual(true);
@ -239,7 +239,7 @@ describe("cmap", function () {
});
});
it("loads built in cmap", function (done) {
var cmapPromise = CMapFactory.create({
const cmapPromise = CMapFactory.create({
encoding: Name.get("Adobe-Japan1-1"),
fetchBuiltInCMap,
useCMap: null,
@ -258,7 +258,7 @@ describe("cmap", function () {
});
});
it("loads built in identity cmap", function (done) {
var cmapPromise = CMapFactory.create({
const cmapPromise = CMapFactory.create({
encoding: Name.get("Identity-H"),
fetchBuiltInCMap,
useCMap: null,
@ -279,7 +279,7 @@ describe("cmap", function () {
});
it("attempts to load a non-existent built-in CMap", function (done) {
var cmapPromise = CMapFactory.create({
const cmapPromise = CMapFactory.create({
encoding: Name.get("null"),
fetchBuiltInCMap,
useCMap: null,
@ -298,7 +298,7 @@ describe("cmap", function () {
it("attempts to load a built-in CMap without the necessary API parameters", function (done) {
function tmpFetchBuiltInCMap(name) {
var CMapReaderFactory = isNodeJS
const CMapReaderFactory = isNodeJS
? new NodeCMapReaderFactory({})
: new DOMCMapReaderFactory({});
return CMapReaderFactory.fetch({
@ -306,7 +306,7 @@ describe("cmap", function () {
});
}
var cmapPromise = CMapFactory.create({
const cmapPromise = CMapFactory.create({
encoding: Name.get("Adobe-Japan1-1"),
fetchBuiltInCMap: tmpFetchBuiltInCMap,
useCMap: null,

View File

@ -34,16 +34,14 @@ import {
describe("crypto", function () {
function hex2binary(s) {
var digits = "0123456789ABCDEF";
const digits = "0123456789ABCDEF";
s = s.toUpperCase();
var n = s.length >> 1,
i,
j;
var result = new Uint8Array(n);
for (i = 0, j = 0; i < n; ++i) {
var d1 = s.charAt(j++);
var d2 = s.charAt(j++);
var value = (digits.indexOf(d1) << 4) | digits.indexOf(d2);
const n = s.length >> 1;
const result = new Uint8Array(n);
for (let i = 0, j = 0; i < n; ++i) {
const d1 = s.charAt(j++);
const d2 = s.charAt(j++);
const value = (digits.indexOf(d1) << 4) | digits.indexOf(d2);
result[i] = value;
}
return result;
@ -52,57 +50,50 @@ describe("crypto", function () {
// RFC 1321, A.5 Test suite
describe("calculateMD5", function () {
it("should pass RFC 1321 test #1", function () {
var input, result, expected;
input = stringToBytes("");
result = calculateMD5(input, 0, input.length);
expected = hex2binary("d41d8cd98f00b204e9800998ecf8427e");
const input = stringToBytes("");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("d41d8cd98f00b204e9800998ecf8427e");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #2", function () {
var input, result, expected;
input = stringToBytes("a");
result = calculateMD5(input, 0, input.length);
expected = hex2binary("0cc175b9c0f1b6a831c399e269772661");
const input = stringToBytes("a");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("0cc175b9c0f1b6a831c399e269772661");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #3", function () {
var input, result, expected;
input = stringToBytes("abc");
result = calculateMD5(input, 0, input.length);
expected = hex2binary("900150983cd24fb0d6963f7d28e17f72");
const input = stringToBytes("abc");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("900150983cd24fb0d6963f7d28e17f72");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #4", function () {
var input, result, expected;
input = stringToBytes("message digest");
result = calculateMD5(input, 0, input.length);
expected = hex2binary("f96b697d7cb7938d525a2f31aaf161d0");
const input = stringToBytes("message digest");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("f96b697d7cb7938d525a2f31aaf161d0");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #5", function () {
var input, result, expected;
input = stringToBytes("abcdefghijklmnopqrstuvwxyz");
result = calculateMD5(input, 0, input.length);
expected = hex2binary("c3fcd3d76192e4007dfb496cca67e13b");
const input = stringToBytes("abcdefghijklmnopqrstuvwxyz");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("c3fcd3d76192e4007dfb496cca67e13b");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #6", function () {
var input, result, expected;
input = stringToBytes(
const input = stringToBytes(
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
);
result = calculateMD5(input, 0, input.length);
expected = hex2binary("d174ab98d277d9f5a5611c2c9f419d9f");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("d174ab98d277d9f5a5611c2c9f419d9f");
expect(result).toEqual(expected);
});
it("should pass RFC 1321 test #7", function () {
var input, result, expected;
input = stringToBytes(
const input = stringToBytes(
"123456789012345678901234567890123456789012345678" +
"90123456789012345678901234567890"
);
result = calculateMD5(input, 0, input.length);
expected = hex2binary("57edf4a22be3c955ac49da2e2107b67a");
const result = calculateMD5(input, 0, input.length);
const expected = hex2binary("57edf4a22be3c955ac49da2e2107b67a");
expect(result).toEqual(expected);
});
});
@ -110,45 +101,40 @@ describe("crypto", function () {
// http://www.freemedialibrary.com/index.php/RC4_test_vectors are used
describe("ARCFourCipher", function () {
it("should pass test #1", function () {
var key, input, result, expected, cipher;
key = hex2binary("0123456789abcdef");
input = hex2binary("0123456789abcdef");
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary("75b7878099e0c596");
const key = hex2binary("0123456789abcdef");
const input = hex2binary("0123456789abcdef");
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary("75b7878099e0c596");
expect(result).toEqual(expected);
});
it("should pass test #2", function () {
var key, input, result, expected, cipher;
key = hex2binary("0123456789abcdef");
input = hex2binary("0000000000000000");
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary("7494c2e7104b0879");
const key = hex2binary("0123456789abcdef");
const input = hex2binary("0000000000000000");
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary("7494c2e7104b0879");
expect(result).toEqual(expected);
});
it("should pass test #3", function () {
var key, input, result, expected, cipher;
key = hex2binary("0000000000000000");
input = hex2binary("0000000000000000");
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary("de188941a3375d3a");
const key = hex2binary("0000000000000000");
const input = hex2binary("0000000000000000");
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary("de188941a3375d3a");
expect(result).toEqual(expected);
});
it("should pass test #4", function () {
var key, input, result, expected, cipher;
key = hex2binary("ef012345");
input = hex2binary("00000000000000000000");
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary("d6a141a7ec3c38dfbd61");
const key = hex2binary("ef012345");
const input = hex2binary("00000000000000000000");
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary("d6a141a7ec3c38dfbd61");
expect(result).toEqual(expected);
});
it("should pass test #5", function () {
var key, input, result, expected, cipher;
key = hex2binary("0123456789abcdef");
input = hex2binary(
const key = hex2binary("0123456789abcdef");
const input = hex2binary(
"010101010101010101010101010101010101010101010101010" +
"10101010101010101010101010101010101010101010101010101010101010101010" +
"10101010101010101010101010101010101010101010101010101010101010101010" +
@ -166,9 +152,9 @@ describe("crypto", function () {
"10101010101010101010101010101010101010101010101010101010101010101010" +
"101010101010101010101"
);
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary(
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary(
"7595c3e6114a09780c4ad452338e1ffd9a1be9498f813d76" +
"533449b6778dcad8c78a8d2ba9ac66085d0e53d59c26c2d1c490c1ebbe0ce66d1b6b" +
"1b13b6b919b847c25a91447a95e75e4ef16779cde8bf0a95850e32af9689444fd377" +
@ -189,16 +175,15 @@ describe("crypto", function () {
expect(result).toEqual(expected);
});
it("should pass test #6", function () {
var key, input, result, expected, cipher;
key = hex2binary("fb029e3031323334");
input = hex2binary(
const key = hex2binary("fb029e3031323334");
const input = hex2binary(
"aaaa0300000008004500004e661a00008011be640a0001220af" +
"fffff00890089003a000080a601100001000000000000204543454a4548454346434" +
"550464545494546464343414341434143414341414100002000011bd0b604"
);
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary(
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary(
"f69c5806bd6ce84626bcbefb9474650aad1f7909b0f64d5f" +
"58a503a258b7ed22eb0ea64930d3a056a55742fcce141d485f8aa836dea18df42c53" +
"80805ad0c61a5d6f58f41040b24b7d1a693856ed0d4398e7aee3bf0e2a2ca8f7"
@ -206,14 +191,13 @@ describe("crypto", function () {
expect(result).toEqual(expected);
});
it("should pass test #7", function () {
var key, input, result, expected, cipher;
key = hex2binary("0123456789abcdef");
input = hex2binary(
const key = hex2binary("0123456789abcdef");
const input = hex2binary(
"123456789abcdef0123456789abcdef0123456789abcdef012345678"
);
cipher = new ARCFourCipher(key);
result = cipher.encryptBlock(input);
expected = hex2binary(
const cipher = new ARCFourCipher(key);
const result = cipher.encryptBlock(input);
const expected = hex2binary(
"66a0949f8af7d6891f7f832ba833c00c892ebe30143ce28740011ecf"
);
expect(result).toEqual(expected);
@ -222,21 +206,19 @@ describe("crypto", function () {
describe("calculateSHA256", function () {
it("should properly hash abc", function () {
var input, result, expected;
input = stringToBytes("abc");
result = calculateSHA256(input, 0, input.length);
expected = hex2binary(
const input = stringToBytes("abc");
const result = calculateSHA256(input, 0, input.length);
const expected = hex2binary(
"BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD"
);
expect(result).toEqual(expected);
});
it("should properly hash a multiblock input", function () {
var input, result, expected;
input = stringToBytes(
const input = stringToBytes(
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
);
result = calculateSHA256(input, 0, input.length);
expected = hex2binary(
const result = calculateSHA256(input, 0, input.length);
const expected = hex2binary(
"248D6A61D20638B8E5C026930C3E6039A33CE45964FF2167F6ECEDD419DB06C1"
);
expect(result).toEqual(expected);
@ -245,24 +227,22 @@ describe("crypto", function () {
describe("calculateSHA384", function () {
it("should properly hash abc", function () {
var input, result, expected;
input = stringToBytes("abc");
result = calculateSHA384(input, 0, input.length);
expected = hex2binary(
const input = stringToBytes("abc");
const result = calculateSHA384(input, 0, input.length);
const expected = hex2binary(
"CB00753F45A35E8BB5A03D699AC65007272C32AB0EDED163" +
"1A8B605A43FF5BED8086072BA1E7CC2358BAECA134C825A7"
);
expect(result).toEqual(expected);
});
it("should properly hash a multiblock input", function () {
var input, result, expected;
input = stringToBytes(
const input = stringToBytes(
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklm" +
"ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs" +
"mnopqrstnopqrstu"
);
result = calculateSHA384(input, 0, input.length);
expected = hex2binary(
const result = calculateSHA384(input, 0, input.length);
const expected = hex2binary(
"09330C33F71147E83D192FC782CD1B4753111B173B3B05D2" +
"2FA08086E3B0F712FCC7C71A557E2DB966C3E9FA91746039"
);
@ -272,10 +252,9 @@ describe("crypto", function () {
describe("calculateSHA512", function () {
it("should properly hash abc", function () {
var input, result, expected;
input = stringToBytes("abc");
result = calculateSHA512(input, 0, input.length);
expected = hex2binary(
const input = stringToBytes("abc");
const result = calculateSHA512(input, 0, input.length);
const expected = hex2binary(
"DDAF35A193617ABACC417349AE20413112E6FA4E89A97EA2" +
"0A9EEEE64B55D39A2192992A274FC1A836BA3C23A3FEEBBD" +
"454D4423643CE80E2A9AC94FA54CA49F"
@ -283,14 +262,13 @@ describe("crypto", function () {
expect(result).toEqual(expected);
});
it("should properly hash a multiblock input", function () {
var input, result, expected;
input = stringToBytes(
const input = stringToBytes(
"abcdefghbcdefghicdefghijdefghijkefghijklfghijklm" +
"ghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrs" +
"mnopqrstnopqrstu"
);
result = calculateSHA512(input, 0, input.length);
expected = hex2binary(
const result = calculateSHA512(input, 0, input.length);
const expected = hex2binary(
"8E959B75DAE313DA8CF4F72814FC143F8F7779C6EB9F7FA1" +
"7299AEADB6889018501D289E4900F7E4331B99DEC4B5433A" +
"C7D329EEB6DD26545E96E55B874BE909"
@ -302,28 +280,26 @@ describe("crypto", function () {
describe("AES128", function () {
describe("Encryption", function () {
it("should be able to encrypt a block", function () {
var input, key, result, expected, iv, cipher;
input = hex2binary("00112233445566778899aabbccddeeff");
key = hex2binary("000102030405060708090a0b0c0d0e0f");
iv = hex2binary("00000000000000000000000000000000");
cipher = new AES128Cipher(key);
result = cipher.encrypt(input, iv);
expected = hex2binary("69c4e0d86a7b0430d8cdb78070b4c55a");
const input = hex2binary("00112233445566778899aabbccddeeff");
const key = hex2binary("000102030405060708090a0b0c0d0e0f");
const iv = hex2binary("00000000000000000000000000000000");
const cipher = new AES128Cipher(key);
const result = cipher.encrypt(input, iv);
const expected = hex2binary("69c4e0d86a7b0430d8cdb78070b4c55a");
expect(result).toEqual(expected);
});
});
describe("Decryption", function () {
it("should be able to decrypt a block with IV in stream", function () {
var input, key, result, expected, cipher;
input = hex2binary(
const input = hex2binary(
"0000000000000000000000000000000069c4e0d86a7b0430d" +
"8cdb78070b4c55a"
);
key = hex2binary("000102030405060708090a0b0c0d0e0f");
cipher = new AES128Cipher(key);
result = cipher.decryptBlock(input);
expected = hex2binary("00112233445566778899aabbccddeeff");
const key = hex2binary("000102030405060708090a0b0c0d0e0f");
const cipher = new AES128Cipher(key);
const result = cipher.decryptBlock(input);
const expected = hex2binary("00112233445566778899aabbccddeeff");
expect(result).toEqual(expected);
});
});
@ -332,47 +308,44 @@ describe("crypto", function () {
describe("AES256", function () {
describe("Encryption", function () {
it("should be able to encrypt a block", function () {
var input, key, result, expected, iv, cipher;
input = hex2binary("00112233445566778899aabbccddeeff");
key = hex2binary(
const input = hex2binary("00112233445566778899aabbccddeeff");
const key = hex2binary(
"000102030405060708090a0b0c0d0e0f101112131415161718" +
"191a1b1c1d1e1f"
);
iv = hex2binary("00000000000000000000000000000000");
cipher = new AES256Cipher(key);
result = cipher.encrypt(input, iv);
expected = hex2binary("8ea2b7ca516745bfeafc49904b496089");
const iv = hex2binary("00000000000000000000000000000000");
const cipher = new AES256Cipher(key);
const result = cipher.encrypt(input, iv);
const expected = hex2binary("8ea2b7ca516745bfeafc49904b496089");
expect(result).toEqual(expected);
});
});
describe("Decryption", function () {
it("should be able to decrypt a block with specified iv", function () {
var input, key, result, expected, cipher, iv;
input = hex2binary("8ea2b7ca516745bfeafc49904b496089");
key = hex2binary(
const input = hex2binary("8ea2b7ca516745bfeafc49904b496089");
const key = hex2binary(
"000102030405060708090a0b0c0d0e0f101112131415161718" +
"191a1b1c1d1e1f"
);
iv = hex2binary("00000000000000000000000000000000");
cipher = new AES256Cipher(key);
result = cipher.decryptBlock(input, false, iv);
expected = hex2binary("00112233445566778899aabbccddeeff");
const iv = hex2binary("00000000000000000000000000000000");
const cipher = new AES256Cipher(key);
const result = cipher.decryptBlock(input, false, iv);
const expected = hex2binary("00112233445566778899aabbccddeeff");
expect(result).toEqual(expected);
});
it("should be able to decrypt a block with IV in stream", function () {
var input, key, result, expected, cipher;
input = hex2binary(
const input = hex2binary(
"000000000000000000000000000000008ea2b7ca516745bf" +
"eafc49904b496089"
);
key = hex2binary(
const key = hex2binary(
"000102030405060708090a0b0c0d0e0f101112131415161718" +
"191a1b1c1d1e1f"
);
cipher = new AES256Cipher(key);
result = cipher.decryptBlock(input, false);
expected = hex2binary("00112233445566778899aabbccddeeff");
const cipher = new AES256Cipher(key);
const result = cipher.decryptBlock(input, false);
const expected = hex2binary("00112233445566778899aabbccddeeff");
expect(result).toEqual(expected);
});
});
@ -380,36 +353,50 @@ describe("crypto", function () {
describe("PDF17Algorithm", function () {
it("should correctly check a user key", function () {
var password, userValidation, userPassword, alg, result;
alg = new PDF17();
password = new Uint8Array([117, 115, 101, 114]);
userValidation = new Uint8Array([117, 169, 4, 32, 159, 101, 22, 220]);
const alg = new PDF17();
const password = new Uint8Array([117, 115, 101, 114]);
// prettier-ignore
userPassword = new Uint8Array([131, 242, 143, 160, 87, 2, 138, 134, 79,
253, 189, 173, 224, 73, 144, 241, 190, 81,
197, 15, 249, 105, 145, 151, 15, 194, 65,
3, 1, 126, 187, 221]);
result = alg.checkUserPassword(password, userValidation, userPassword);
const userValidation = new Uint8Array([
117, 169, 4, 32, 159, 101, 22, 220
]);
// prettier-ignore
const userPassword = new Uint8Array([
131, 242, 143, 160, 87, 2, 138, 134, 79,
253, 189, 173, 224, 73, 144, 241, 190, 81,
197, 15, 249, 105, 145, 151, 15, 194, 65,
3, 1, 126, 187, 221
]);
const result = alg.checkUserPassword(
password,
userValidation,
userPassword
);
expect(result).toEqual(true);
});
it("should correctly check an owner key", function () {
var password, ownerValidation, ownerPassword, alg, result, uBytes;
alg = new PDF17();
password = new Uint8Array([111, 119, 110, 101, 114]);
ownerValidation = new Uint8Array([243, 118, 71, 153, 128, 17, 101, 62]);
const alg = new PDF17();
const password = new Uint8Array([111, 119, 110, 101, 114]);
// prettier-ignore
ownerPassword = new Uint8Array([60, 98, 137, 35, 51, 101, 200, 152, 210,
178, 226, 228, 134, 205, 163, 24, 204,
126, 177, 36, 106, 50, 36, 125, 210, 172,
171, 120, 222, 108, 139, 115]);
const ownerValidation = new Uint8Array([
243, 118, 71, 153, 128, 17, 101, 62
]);
// prettier-ignore
uBytes = new Uint8Array([131, 242, 143, 160, 87, 2, 138, 134, 79, 253,
189, 173, 224, 73, 144, 241, 190, 81, 197, 15,
249, 105, 145, 151, 15, 194, 65, 3, 1, 126, 187,
221, 117, 169, 4, 32, 159, 101, 22, 220, 168,
94, 215, 192, 100, 38, 188, 40]);
result = alg.checkOwnerPassword(
const ownerPassword = new Uint8Array([
60, 98, 137, 35, 51, 101, 200, 152, 210,
178, 226, 228, 134, 205, 163, 24, 204,
126, 177, 36, 106, 50, 36, 125, 210, 172,
171, 120, 222, 108, 139, 115
]);
// prettier-ignore
const uBytes = new Uint8Array([
131, 242, 143, 160, 87, 2, 138, 134, 79, 253,
189, 173, 224, 73, 144, 241, 190, 81, 197, 15,
249, 105, 145, 151, 15, 194, 65, 3, 1, 126, 187,
221, 117, 169, 4, 32, 159, 101, 22, 220, 168,
94, 215, 192, 100, 38, 188, 40
]);
const result = alg.checkOwnerPassword(
password,
ownerValidation,
uBytes,
@ -419,83 +406,112 @@ describe("crypto", function () {
});
it("should generate a file encryption key from the user key", function () {
var password, userKeySalt, expected, alg, result, userEncryption;
alg = new PDF17();
password = new Uint8Array([117, 115, 101, 114]);
userKeySalt = new Uint8Array([168, 94, 215, 192, 100, 38, 188, 40]);
const alg = new PDF17();
const password = new Uint8Array([117, 115, 101, 114]);
const userKeySalt = new Uint8Array([168, 94, 215, 192, 100, 38, 188, 40]);
// prettier-ignore
userEncryption = new Uint8Array([35, 150, 195, 169, 245, 51, 51, 255,
158, 158, 33, 242, 231, 75, 125, 190,
25, 126, 172, 114, 195, 244, 137, 245,
234, 165, 42, 74, 60, 38, 17, 17]);
result = alg.getUserKey(password, userKeySalt, userEncryption);
const userEncryption = new Uint8Array([
35, 150, 195, 169, 245, 51, 51, 255,
158, 158, 33, 242, 231, 75, 125, 190,
25, 126, 172, 114, 195, 244, 137, 245,
234, 165, 42, 74, 60, 38, 17, 17
]);
const result = alg.getUserKey(password, userKeySalt, userEncryption);
// prettier-ignore
expected = new Uint8Array([63, 114, 136, 209, 87, 61, 12, 30, 249, 1,
186, 144, 254, 248, 163, 153, 151, 51, 133,
10, 80, 152, 206, 15, 72, 187, 231, 33, 224,
239, 13, 213]);
const expected = new Uint8Array([
63, 114, 136, 209, 87, 61, 12, 30, 249, 1,
186, 144, 254, 248, 163, 153, 151, 51, 133,
10, 80, 152, 206, 15, 72, 187, 231, 33, 224,
239, 13, 213
]);
expect(result).toEqual(expected);
});
it("should generate a file encryption key from the owner key", function () {
var password, ownerKeySalt, expected, alg, result, ownerEncryption;
var uBytes;
alg = new PDF17();
password = new Uint8Array([111, 119, 110, 101, 114]);
ownerKeySalt = new Uint8Array([200, 245, 242, 12, 218, 123, 24, 120]);
const alg = new PDF17();
const password = new Uint8Array([111, 119, 110, 101, 114]);
// prettier-ignore
ownerEncryption = new Uint8Array([213, 202, 14, 189, 110, 76, 70, 191, 6,
195, 10, 190, 157, 100, 144, 85, 8, 62,
123, 178, 156, 229, 50, 40, 229, 216,
54, 222, 34, 38, 106, 223]);
const ownerKeySalt = new Uint8Array([
200, 245, 242, 12, 218, 123, 24, 120
]);
// prettier-ignore
uBytes = new Uint8Array([131, 242, 143, 160, 87, 2, 138, 134, 79, 253,
189, 173, 224, 73, 144, 241, 190, 81, 197, 15,
249, 105, 145, 151, 15, 194, 65, 3, 1, 126, 187,
221, 117, 169, 4, 32, 159, 101, 22, 220, 168,
94, 215, 192, 100, 38, 188, 40]);
result = alg.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);
const ownerEncryption = new Uint8Array([
213, 202, 14, 189, 110, 76, 70, 191, 6,
195, 10, 190, 157, 100, 144, 85, 8, 62,
123, 178, 156, 229, 50, 40, 229, 216,
54, 222, 34, 38, 106, 223
]);
// prettier-ignore
expected = new Uint8Array([63, 114, 136, 209, 87, 61, 12, 30, 249, 1,
186, 144, 254, 248, 163, 153, 151, 51, 133,
10, 80, 152, 206, 15, 72, 187, 231, 33, 224,
239, 13, 213]);
const uBytes = new Uint8Array([
131, 242, 143, 160, 87, 2, 138, 134, 79, 253,
189, 173, 224, 73, 144, 241, 190, 81, 197, 15,
249, 105, 145, 151, 15, 194, 65, 3, 1, 126, 187,
221, 117, 169, 4, 32, 159, 101, 22, 220, 168,
94, 215, 192, 100, 38, 188, 40
]);
const result = alg.getOwnerKey(
password,
ownerKeySalt,
uBytes,
ownerEncryption
);
// prettier-ignore
const expected = new Uint8Array([
63, 114, 136, 209, 87, 61, 12, 30, 249, 1,
186, 144, 254, 248, 163, 153, 151, 51, 133,
10, 80, 152, 206, 15, 72, 187, 231, 33, 224,
239, 13, 213
]);
expect(result).toEqual(expected);
});
});
describe("PDF20Algorithm", function () {
it("should correctly check a user key", function () {
var password, userValidation, userPassword, alg, result;
alg = new PDF20();
password = new Uint8Array([117, 115, 101, 114]);
userValidation = new Uint8Array([83, 245, 146, 101, 198, 247, 34, 198]);
const alg = new PDF20();
const password = new Uint8Array([117, 115, 101, 114]);
// prettier-ignore
userPassword = new Uint8Array([94, 230, 205, 75, 166, 99, 250, 76, 219,
128, 17, 85, 57, 17, 33, 164, 150, 46,
103, 176, 160, 156, 187, 233, 166, 223,
163, 253, 147, 235, 95, 184]);
result = alg.checkUserPassword(password, userValidation, userPassword);
const userValidation = new Uint8Array([
83, 245, 146, 101, 198, 247, 34, 198
]);
// prettier-ignore
const userPassword = new Uint8Array([
94, 230, 205, 75, 166, 99, 250, 76, 219,
128, 17, 85, 57, 17, 33, 164, 150, 46,
103, 176, 160, 156, 187, 233, 166, 223,
163, 253, 147, 235, 95, 184
]);
const result = alg.checkUserPassword(
password,
userValidation,
userPassword
);
expect(result).toEqual(true);
});
it("should correctly check an owner key", function () {
var password, ownerValidation, ownerPassword, alg, result, uBytes;
alg = new PDF20();
password = new Uint8Array([111, 119, 110, 101, 114]);
ownerValidation = new Uint8Array([142, 232, 169, 208, 202, 214, 5, 185]);
const alg = new PDF20();
const password = new Uint8Array([111, 119, 110, 101, 114]);
// prettier-ignore
ownerPassword = new Uint8Array([88, 232, 62, 54, 245, 26, 245, 209, 137,
123, 221, 72, 199, 49, 37, 217, 31, 74,
115, 167, 127, 158, 176, 77, 45, 163, 87,
47, 39, 90, 217, 141]);
const ownerValidation = new Uint8Array([
142, 232, 169, 208, 202, 214, 5, 185
]);
// prettier-ignore
uBytes = new Uint8Array([94, 230, 205, 75, 166, 99, 250, 76, 219, 128,
17, 85, 57, 17, 33, 164, 150, 46, 103, 176, 160,
156, 187, 233, 166, 223, 163, 253, 147, 235, 95,
184, 83, 245, 146, 101, 198, 247, 34, 198, 191,
11, 16, 94, 237, 216, 20, 175]);
result = alg.checkOwnerPassword(
const ownerPassword = new Uint8Array([
88, 232, 62, 54, 245, 26, 245, 209, 137,
123, 221, 72, 199, 49, 37, 217, 31, 74,
115, 167, 127, 158, 176, 77, 45, 163, 87,
47, 39, 90, 217, 141
]);
// prettier-ignore
const uBytes = new Uint8Array([
94, 230, 205, 75, 166, 99, 250, 76, 219, 128,
17, 85, 57, 17, 33, 164, 150, 46, 103, 176, 160,
156, 187, 233, 166, 223, 163, 253, 147, 235, 95,
184, 83, 245, 146, 101, 198, 247, 34, 198, 191,
11, 16, 94, 237, 216, 20, 175
]);
const result = alg.checkOwnerPassword(
password,
ownerValidation,
uBytes,
@ -505,47 +521,59 @@ describe("crypto", function () {
});
it("should generate a file encryption key from the user key", function () {
var password, userKeySalt, expected, alg, result, userEncryption;
alg = new PDF20();
password = new Uint8Array([117, 115, 101, 114]);
userKeySalt = new Uint8Array([191, 11, 16, 94, 237, 216, 20, 175]);
const alg = new PDF20();
const password = new Uint8Array([117, 115, 101, 114]);
const userKeySalt = new Uint8Array([191, 11, 16, 94, 237, 216, 20, 175]);
// prettier-ignore
userEncryption = new Uint8Array([121, 208, 2, 181, 230, 89, 156, 60, 253,
143, 212, 28, 84, 180, 196, 177, 173,
128, 221, 107, 46, 20, 94, 186, 135, 51,
95, 24, 20, 223, 254, 36]);
result = alg.getUserKey(password, userKeySalt, userEncryption);
const userEncryption = new Uint8Array([
121, 208, 2, 181, 230, 89, 156, 60, 253,
143, 212, 28, 84, 180, 196, 177, 173,
128, 221, 107, 46, 20, 94, 186, 135, 51,
95, 24, 20, 223, 254, 36
]);
const result = alg.getUserKey(password, userKeySalt, userEncryption);
// prettier-ignore
expected = new Uint8Array([42, 218, 213, 39, 73, 91, 72, 79, 67, 38, 248,
133, 18, 189, 61, 34, 107, 79, 29, 56, 59,
181, 213, 118, 113, 34, 65, 210, 87, 174, 22,
239]);
const expected = new Uint8Array([
42, 218, 213, 39, 73, 91, 72, 79, 67, 38, 248,
133, 18, 189, 61, 34, 107, 79, 29, 56, 59,
181, 213, 118, 113, 34, 65, 210, 87, 174, 22,
239
]);
expect(result).toEqual(expected);
});
it("should generate a file encryption key from the owner key", function () {
var password, ownerKeySalt, expected, alg, result, ownerEncryption;
var uBytes;
alg = new PDF20();
password = new Uint8Array([111, 119, 110, 101, 114]);
ownerKeySalt = new Uint8Array([29, 208, 185, 46, 11, 76, 135, 149]);
const alg = new PDF20();
const password = new Uint8Array([111, 119, 110, 101, 114]);
const ownerKeySalt = new Uint8Array([29, 208, 185, 46, 11, 76, 135, 149]);
// prettier-ignore
ownerEncryption = new Uint8Array([209, 73, 224, 77, 103, 155, 201, 181,
190, 68, 223, 20, 62, 90, 56, 210, 5,
240, 178, 128, 238, 124, 68, 254, 253,
244, 62, 108, 208, 135, 10, 251]);
const ownerEncryption = new Uint8Array([
209, 73, 224, 77, 103, 155, 201, 181,
190, 68, 223, 20, 62, 90, 56, 210, 5,
240, 178, 128, 238, 124, 68, 254, 253,
244, 62, 108, 208, 135, 10, 251
]);
// prettier-ignore
uBytes = new Uint8Array([94, 230, 205, 75, 166, 99, 250, 76, 219, 128,
17, 85, 57, 17, 33, 164, 150, 46, 103, 176, 160,
156, 187, 233, 166, 223, 163, 253, 147, 235, 95,
184, 83, 245, 146, 101, 198, 247, 34, 198, 191,
11, 16, 94, 237, 216, 20, 175]);
result = alg.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption);
const uBytes = new Uint8Array([
94, 230, 205, 75, 166, 99, 250, 76, 219, 128,
17, 85, 57, 17, 33, 164, 150, 46, 103, 176, 160,
156, 187, 233, 166, 223, 163, 253, 147, 235, 95,
184, 83, 245, 146, 101, 198, 247, 34, 198, 191,
11, 16, 94, 237, 216, 20, 175
]);
const result = alg.getOwnerKey(
password,
ownerKeySalt,
uBytes,
ownerEncryption
);
// prettier-ignore
expected = new Uint8Array([42, 218, 213, 39, 73, 91, 72, 79, 67, 38, 248,
133, 18, 189, 61, 34, 107, 79, 29, 56, 59,
181, 213, 118, 113, 34, 65, 210, 87, 174, 22,
239]);
const expected = new Uint8Array([
42, 218, 213, 39, 73, 91, 72, 79, 67, 38, 248,
133, 18, 189, 61, 34, 107, 79, 29, 56, 59,
181, 213, 118, 113, 34, 65, 210, 87, 174, 22,
239
]);
expect(result).toEqual(expected);
});
});
@ -553,8 +581,8 @@ describe("crypto", function () {
describe("CipherTransformFactory", function () {
function buildDict(map) {
var dict = new Dict();
for (var key in map) {
const dict = new Dict();
for (const key in map) {
dict.set(key, map[key]);
}
return dict;
@ -562,7 +590,7 @@ describe("CipherTransformFactory", function () {
function ensurePasswordCorrect(done, dict, fileId, password) {
try {
var factory = new CipherTransformFactory(dict, fileId, password);
const factory = new CipherTransformFactory(dict, fileId, password);
expect("createCipherTransform" in factory).toEqual(true);
} catch (ex) {
done.fail("Password should be accepted: " + ex);
@ -608,8 +636,8 @@ describe("CipherTransformFactory", function () {
expect(string).toEqual(decrypted);
}
var fileId1, fileId2, dict1, dict2, dict3;
var aes256Dict, aes256IsoDict, aes256BlankDict, aes256IsoBlankDict;
let fileId1, fileId2, dict1, dict2, dict3;
let aes256Dict, aes256IsoDict, aes256BlankDict, aes256IsoBlankDict;
beforeAll(function (done) {
fileId1 = unescape("%F6%C6%AF%17%F3rR%8DRM%9A%80%D1%EF%DF%18");

View File

@ -63,8 +63,8 @@ describe("custom canvas rendering", function () {
});
it("renders to canvas with a default white background", function (done) {
var viewport = page.getViewport({ scale: 1 });
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const viewport = page.getViewport({ scale: 1 });
const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const renderTask = page.render({
canvasContext: canvasAndCtx.context,
@ -85,8 +85,8 @@ describe("custom canvas rendering", function () {
});
it("renders to canvas with a custom background", function (done) {
var viewport = page.getViewport({ scale: 1 });
var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const viewport = page.getViewport({ scale: 1 });
const canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
const renderTask = page.render({
canvasContext: canvasAndCtx.context,

View File

@ -41,8 +41,8 @@ function withZlib(isZlibRequired, callback) {
return callback();
}
var zlib = __non_webpack_require__("zlib");
var deflateSync = zlib.deflateSync;
const zlib = __non_webpack_require__("zlib");
const deflateSync = zlib.deflateSync;
zlib.deflateSync = disabledDeflateSync;
function disabledDeflateSync() {
throw new Error("zlib.deflateSync is explicitly disabled for testing.");
@ -52,14 +52,14 @@ function withZlib(isZlibRequired, callback) {
zlib.deflateSync = deflateSync;
}
}
var promise = callback();
const promise = callback();
promise.then(restoreDeflateSync, restoreDeflateSync);
return promise;
}
describe("SVGGraphics", function () {
var loadingTask;
var page;
let loadingTask;
let page;
beforeAll(function (done) {
loadingTask = getDocument(buildGetDocumentParams("xobject-image.pdf"));
loadingTask.promise.then(function (doc) {
@ -75,30 +75,30 @@ describe("SVGGraphics", function () {
describe("paintImageXObject", function () {
function getSVGImage() {
var svgGfx;
let svgGfx;
return page
.getOperatorList()
.then(function (opList) {
var forceDataSchema = true;
const forceDataSchema = true;
svgGfx = new SVGGraphics(page.commonObjs, page.objs, forceDataSchema);
return svgGfx.loadDependencies(opList);
})
.then(function () {
var svgImg;
let svgImg;
// A mock to steal the svg:image element from paintInlineImageXObject.
var elementContainer = {
const elementContainer = {
appendChild(element) {
svgImg = element;
},
};
// This points to the XObject image in xobject-image.pdf.
var xobjectObjId = "img_p0_1";
const xobjectObjId = "img_p0_1";
if (isNodeJS) {
setStubs(global);
}
try {
var imgData = svgGfx.objs.get(xobjectObjId);
const imgData = svgGfx.objs.get(xobjectObjId);
svgGfx.paintInlineImageXObject(imgData, elementContainer);
} finally {
if (isNodeJS) {
@ -133,7 +133,7 @@ describe("SVGGraphics", function () {
expect(svgImg.nodeName).toBe("svg:image");
expect(svgImg.getAttributeNS(null, "width")).toBe("200px");
expect(svgImg.getAttributeNS(null, "height")).toBe("100px");
var imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
const imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
// forceDataSchema = true, so the generated URL should be a data:-URL.
expect(imgUrl).toMatch(/^data:image\/png;base64,/);
// Test whether the generated image has a reasonable file size.
@ -151,7 +151,7 @@ describe("SVGGraphics", function () {
expect(svgImg.nodeName).toBe("svg:image");
expect(svgImg.getAttributeNS(null, "width")).toBe("200px");
expect(svgImg.getAttributeNS(null, "height")).toBe("100px");
var imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
const imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
expect(imgUrl).toMatch(/^data:image\/png;base64,/);
// The size of our naively generated PNG file is excessive :(
expect(imgUrl.length).toBe(80246);

View File

@ -38,8 +38,8 @@ describe("evaluator", function () {
};
function runOperatorListCheck(evaluator, stream, resources, callback) {
var result = new OperatorList();
var task = new WorkerTask("OperatorListCheck");
const result = new OperatorList();
const task = new WorkerTask("OperatorListCheck");
evaluator
.getOperatorList({
stream,
@ -57,7 +57,7 @@ describe("evaluator", function () {
);
}
var partialEvaluator;
let partialEvaluator;
beforeAll(function (done) {
partialEvaluator = new PartialEvaluator({
@ -75,7 +75,7 @@ describe("evaluator", function () {
describe("splitCombinedOperations", function () {
it("should reject unknown operations", function (done) {
var stream = new StringStream("fTT");
const stream = new StringStream("fTT");
runOperatorListCheck(
partialEvaluator,
stream,
@ -91,7 +91,7 @@ describe("evaluator", function () {
});
it("should handle one operation", function (done) {
var stream = new StringStream("Q");
const stream = new StringStream("Q");
runOperatorListCheck(
partialEvaluator,
stream,
@ -120,7 +120,7 @@ describe("evaluator", function () {
const resources = new ResourcesMock();
resources.XObject = xObject;
var stream = new StringStream("/Res1 DoQ");
const stream = new StringStream("/Res1 DoQ");
runOperatorListCheck(partialEvaluator, stream, resources, function (
result
) {
@ -137,7 +137,7 @@ describe("evaluator", function () {
});
it("should handle three glued operations", function (done) {
var stream = new StringStream("fff");
const stream = new StringStream("fff");
runOperatorListCheck(
partialEvaluator,
stream,
@ -154,9 +154,9 @@ describe("evaluator", function () {
});
it("should handle three glued operations #2", function (done) {
var resources = new ResourcesMock();
const resources = new ResourcesMock();
resources.Res1 = {};
var stream = new StringStream("B*Bf*");
const stream = new StringStream("B*Bf*");
runOperatorListCheck(partialEvaluator, stream, resources, function (
result
) {
@ -170,7 +170,7 @@ describe("evaluator", function () {
});
it("should handle glued operations and operands", function (done) {
var stream = new StringStream("f5 Ts");
const stream = new StringStream("f5 Ts");
runOperatorListCheck(
partialEvaluator,
stream,
@ -189,7 +189,7 @@ describe("evaluator", function () {
});
it("should handle glued operations and literals", function (done) {
var stream = new StringStream("trueifalserinulln");
const stream = new StringStream("trueifalserinulln");
runOperatorListCheck(
partialEvaluator,
stream,
@ -214,7 +214,7 @@ describe("evaluator", function () {
describe("validateNumberOfArgs", function () {
it("should execute if correct number of arguments", function (done) {
var stream = new StringStream("5 1 d0");
const stream = new StringStream("5 1 d0");
runOperatorListCheck(
partialEvaluator,
stream,
@ -228,7 +228,7 @@ describe("evaluator", function () {
);
});
it("should execute if too many arguments", function (done) {
var stream = new StringStream("5 1 4 d0");
const stream = new StringStream("5 1 4 d0");
runOperatorListCheck(
partialEvaluator,
stream,
@ -252,7 +252,7 @@ describe("evaluator", function () {
const resources = new ResourcesMock();
resources.ExtGState = extGState;
var stream = new StringStream("/F2 /GS2 gs 5.711 Tf");
const stream = new StringStream("/F2 /GS2 gs 5.711 Tf");
runOperatorListCheck(partialEvaluator, stream, resources, function (
result
) {
@ -273,7 +273,7 @@ describe("evaluator", function () {
});
});
it("should skip if too few arguments", function (done) {
var stream = new StringStream("5 d0");
const stream = new StringStream("5 d0");
runOperatorListCheck(
partialEvaluator,
stream,
@ -326,7 +326,7 @@ describe("evaluator", function () {
);
it("should close opened saves", function (done) {
var stream = new StringStream("qq");
const stream = new StringStream("qq");
runOperatorListCheck(
partialEvaluator,
stream,
@ -343,7 +343,7 @@ describe("evaluator", function () {
);
});
it("should error on paintXObject if name is missing", function (done) {
var stream = new StringStream("/ Do");
const stream = new StringStream("/ Do");
runOperatorListCheck(
partialEvaluator,
stream,
@ -358,17 +358,17 @@ describe("evaluator", function () {
);
});
it("should skip paintXObject if subtype is PS", function (done) {
var xobjStreamDict = new Dict();
const xobjStreamDict = new Dict();
xobjStreamDict.set("Subtype", Name.get("PS"));
var xobjStream = new Stream([], 0, 0, xobjStreamDict);
const xobjStream = new Stream([], 0, 0, xobjStreamDict);
var xobjs = new Dict();
const xobjs = new Dict();
xobjs.set("Res1", xobjStream);
var resources = new Dict();
const resources = new Dict();
resources.set("XObject", xobjs);
var stream = new StringStream("/Res1 Do");
const stream = new StringStream("/Res1 Do");
runOperatorListCheck(partialEvaluator, stream, resources, function (
result
) {
@ -381,10 +381,10 @@ describe("evaluator", function () {
describe("thread control", function () {
it("should abort operator list parsing", function (done) {
var stream = new StringStream("qqQQ");
var resources = new ResourcesMock();
var result = new OperatorList();
var task = new WorkerTask("OperatorListAbort");
const stream = new StringStream("qqQQ");
const resources = new ResourcesMock();
const result = new OperatorList();
const task = new WorkerTask("OperatorListAbort");
task.terminate();
partialEvaluator
.getOperatorList({
@ -400,9 +400,9 @@ describe("evaluator", function () {
});
});
it("should abort text parsing parsing", function (done) {
var resources = new ResourcesMock();
var stream = new StringStream("qqQQ");
var task = new WorkerTask("TextContentAbort");
const resources = new ResourcesMock();
const stream = new StringStream("qqQQ");
const task = new WorkerTask("TextContentAbort");
task.terminate();
partialEvaluator
.getTextContent({
@ -423,7 +423,7 @@ describe("evaluator", function () {
}
it("should get correct total length after flushing", function () {
var operatorList = new OperatorList(null, new StreamSinkMock());
const operatorList = new OperatorList(null, new StreamSinkMock());
operatorList.addOp(OPS.save, null);
operatorList.addOp(OPS.restore, null);

View File

@ -26,7 +26,7 @@ describe("function", function () {
toMatchArray(util, customEqualityTesters) {
return {
compare(actual, expected) {
var result = {};
const result = {};
if (actual.length !== expected.length) {
result.pass = false;
result.message =
@ -37,16 +37,16 @@ describe("function", function () {
return result;
}
result.pass = true;
for (var i = 0; i < expected.length; i++) {
var a = actual[i],
for (let i = 0; i < expected.length; i++) {
const a = actual[i],
b = expected[i];
if (Array.isArray(b)) {
if (a.length !== b.length) {
result.pass = false;
break;
}
for (var j = 0; j < a.length; j++) {
var suba = a[j],
for (let j = 0; j < a.length; j++) {
const suba = a[j],
subb = b[j];
if (suba !== subb) {
result.pass = false;
@ -69,45 +69,45 @@ describe("function", function () {
describe("PostScriptParser", function () {
function parse(program) {
var stream = new StringStream(program);
var parser = new PostScriptParser(new PostScriptLexer(stream));
const stream = new StringStream(program);
const parser = new PostScriptParser(new PostScriptLexer(stream));
return parser.parse();
}
it("parses empty programs", function () {
var output = parse("{}");
const output = parse("{}");
expect(output.length).toEqual(0);
});
it("parses positive numbers", function () {
var number = 999;
var program = parse("{ " + number + " }");
var expectedProgram = [number];
const number = 999;
const program = parse("{ " + number + " }");
const expectedProgram = [number];
expect(program).toMatchArray(expectedProgram);
});
it("parses negative numbers", function () {
var number = -999;
var program = parse("{ " + number + " }");
var expectedProgram = [number];
const number = -999;
const program = parse("{ " + number + " }");
const expectedProgram = [number];
expect(program).toMatchArray(expectedProgram);
});
it("parses negative floats", function () {
var number = 3.3;
var program = parse("{ " + number + " }");
var expectedProgram = [number];
const number = 3.3;
const program = parse("{ " + number + " }");
const expectedProgram = [number];
expect(program).toMatchArray(expectedProgram);
});
it("parses operators", function () {
var program = parse("{ sub }");
var expectedProgram = ["sub"];
const program = parse("{ sub }");
const expectedProgram = ["sub"];
expect(program).toMatchArray(expectedProgram);
});
it("parses if statements", function () {
var program = parse("{ { 99 } if }");
var expectedProgram = [3, "jz", 99];
const program = parse("{ { 99 } if }");
const expectedProgram = [3, "jz", 99];
expect(program).toMatchArray(expectedProgram);
});
it("parses ifelse statements", function () {
var program = parse("{ { 99 } { 44 } ifelse }");
var expectedProgram = [5, "jz", 99, 6, "j", 44];
const program = parse("{ { 99 } { 44 } ifelse }");
const expectedProgram = [5, "jz", 99, 6, "j", 44];
expect(program).toMatchArray(expectedProgram);
});
it("handles missing brackets", function () {
@ -116,354 +116,354 @@ describe("function", function () {
}).toThrow(new Error("Unexpected symbol: found undefined expected 1."));
});
it("handles junk after the end", function () {
var number = 3.3;
var program = parse("{ " + number + " }#");
var expectedProgram = [number];
const number = 3.3;
const program = parse("{ " + number + " }#");
const expectedProgram = [number];
expect(program).toMatchArray(expectedProgram);
});
});
describe("PostScriptEvaluator", function () {
function evaluate(program) {
var stream = new StringStream(program);
var parser = new PostScriptParser(new PostScriptLexer(stream));
var code = parser.parse();
var evaluator = new PostScriptEvaluator(code);
var output = evaluator.execute();
const stream = new StringStream(program);
const parser = new PostScriptParser(new PostScriptLexer(stream));
const code = parser.parse();
const evaluator = new PostScriptEvaluator(code);
const output = evaluator.execute();
return output;
}
it("pushes stack", function () {
var stack = evaluate("{ 99 }");
var expectedStack = [99];
const stack = evaluate("{ 99 }");
const expectedStack = [99];
expect(stack).toMatchArray(expectedStack);
});
it("handles if with true", function () {
var stack = evaluate("{ 1 {99} if }");
var expectedStack = [99];
const stack = evaluate("{ 1 {99} if }");
const expectedStack = [99];
expect(stack).toMatchArray(expectedStack);
});
it("handles if with false", function () {
var stack = evaluate("{ 0 {99} if }");
var expectedStack = [];
const stack = evaluate("{ 0 {99} if }");
const expectedStack = [];
expect(stack).toMatchArray(expectedStack);
});
it("handles ifelse with true", function () {
var stack = evaluate("{ 1 {99} {77} ifelse }");
var expectedStack = [99];
const stack = evaluate("{ 1 {99} {77} ifelse }");
const expectedStack = [99];
expect(stack).toMatchArray(expectedStack);
});
it("handles ifelse with false", function () {
var stack = evaluate("{ 0 {99} {77} ifelse }");
var expectedStack = [77];
const stack = evaluate("{ 0 {99} {77} ifelse }");
const expectedStack = [77];
expect(stack).toMatchArray(expectedStack);
});
it("handles nested if", function () {
var stack = evaluate("{ 1 {1 {77} if} if }");
var expectedStack = [77];
const stack = evaluate("{ 1 {1 {77} if} if }");
const expectedStack = [77];
expect(stack).toMatchArray(expectedStack);
});
it("abs", function () {
var stack = evaluate("{ -2 abs }");
var expectedStack = [2];
const stack = evaluate("{ -2 abs }");
const expectedStack = [2];
expect(stack).toMatchArray(expectedStack);
});
it("adds", function () {
var stack = evaluate("{ 1 2 add }");
var expectedStack = [3];
const stack = evaluate("{ 1 2 add }");
const expectedStack = [3];
expect(stack).toMatchArray(expectedStack);
});
it("boolean and", function () {
var stack = evaluate("{ true false and }");
var expectedStack = [false];
const stack = evaluate("{ true false and }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("bitwise and", function () {
var stack = evaluate("{ 254 1 and }");
var expectedStack = [254 & 1];
const stack = evaluate("{ 254 1 and }");
const expectedStack = [254 & 1];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the inverse tangent of a number", function () {
var stack = evaluate("{ 90 atan }");
var expectedStack = [Math.atan(90)];
const stack = evaluate("{ 90 atan }");
const expectedStack = [Math.atan(90)];
expect(stack).toMatchArray(expectedStack);
});
it("handles bitshifting ", function () {
var stack = evaluate("{ 50 2 bitshift }");
var expectedStack = [200];
const stack = evaluate("{ 50 2 bitshift }");
const expectedStack = [200];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the ceiling value", function () {
var stack = evaluate("{ 9.9 ceiling }");
var expectedStack = [10];
const stack = evaluate("{ 9.9 ceiling }");
const expectedStack = [10];
expect(stack).toMatchArray(expectedStack);
});
it("copies", function () {
var stack = evaluate("{ 99 98 2 copy }");
var expectedStack = [99, 98, 99, 98];
const stack = evaluate("{ 99 98 2 copy }");
const expectedStack = [99, 98, 99, 98];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the cosine of a number", function () {
var stack = evaluate("{ 90 cos }");
var expectedStack = [Math.cos(90)];
const stack = evaluate("{ 90 cos }");
const expectedStack = [Math.cos(90)];
expect(stack).toMatchArray(expectedStack);
});
it("converts to int", function () {
var stack = evaluate("{ 9.9 cvi }");
var expectedStack = [9];
const stack = evaluate("{ 9.9 cvi }");
const expectedStack = [9];
expect(stack).toMatchArray(expectedStack);
});
it("converts negatives to int", function () {
var stack = evaluate("{ -9.9 cvi }");
var expectedStack = [-9];
const stack = evaluate("{ -9.9 cvi }");
const expectedStack = [-9];
expect(stack).toMatchArray(expectedStack);
});
it("converts to real", function () {
var stack = evaluate("{ 55.34 cvr }");
var expectedStack = [55.34];
const stack = evaluate("{ 55.34 cvr }");
const expectedStack = [55.34];
expect(stack).toMatchArray(expectedStack);
});
it("divides", function () {
var stack = evaluate("{ 6 5 div }");
var expectedStack = [1.2];
const stack = evaluate("{ 6 5 div }");
const expectedStack = [1.2];
expect(stack).toMatchArray(expectedStack);
});
it("maps division by zero to infinity", function () {
var stack = evaluate("{ 6 0 div }");
var expectedStack = [Infinity];
const stack = evaluate("{ 6 0 div }");
const expectedStack = [Infinity];
expect(stack).toMatchArray(expectedStack);
});
it("duplicates", function () {
var stack = evaluate("{ 99 dup }");
var expectedStack = [99, 99];
const stack = evaluate("{ 99 dup }");
const expectedStack = [99, 99];
expect(stack).toMatchArray(expectedStack);
});
it("accepts an equality", function () {
var stack = evaluate("{ 9 9 eq }");
var expectedStack = [true];
const stack = evaluate("{ 9 9 eq }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects an inequality", function () {
var stack = evaluate("{ 9 8 eq }");
var expectedStack = [false];
const stack = evaluate("{ 9 8 eq }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("exchanges", function () {
var stack = evaluate("{ 44 99 exch }");
var expectedStack = [99, 44];
const stack = evaluate("{ 44 99 exch }");
const expectedStack = [99, 44];
expect(stack).toMatchArray(expectedStack);
});
it("handles exponentiation", function () {
var stack = evaluate("{ 10 2 exp }");
var expectedStack = [100];
const stack = evaluate("{ 10 2 exp }");
const expectedStack = [100];
expect(stack).toMatchArray(expectedStack);
});
it("pushes false onto the stack", function () {
var stack = evaluate("{ false }");
var expectedStack = [false];
const stack = evaluate("{ false }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the floor value", function () {
var stack = evaluate("{ 9.9 floor }");
var expectedStack = [9];
const stack = evaluate("{ 9.9 floor }");
const expectedStack = [9];
expect(stack).toMatchArray(expectedStack);
});
it("handles greater than or equal to", function () {
var stack = evaluate("{ 10 9 ge }");
var expectedStack = [true];
const stack = evaluate("{ 10 9 ge }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects less than for greater than or equal to", function () {
var stack = evaluate("{ 8 9 ge }");
var expectedStack = [false];
const stack = evaluate("{ 8 9 ge }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("handles greater than", function () {
var stack = evaluate("{ 10 9 gt }");
var expectedStack = [true];
const stack = evaluate("{ 10 9 gt }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects less than or equal for greater than", function () {
var stack = evaluate("{ 9 9 gt }");
var expectedStack = [false];
const stack = evaluate("{ 9 9 gt }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("divides to integer", function () {
var stack = evaluate("{ 2 3 idiv }");
var expectedStack = [0];
const stack = evaluate("{ 2 3 idiv }");
const expectedStack = [0];
expect(stack).toMatchArray(expectedStack);
});
it("divides to negative integer", function () {
var stack = evaluate("{ -2 3 idiv }");
var expectedStack = [0];
const stack = evaluate("{ -2 3 idiv }");
const expectedStack = [0];
expect(stack).toMatchArray(expectedStack);
});
it("duplicates index", function () {
var stack = evaluate("{ 4 3 2 1 2 index }");
var expectedStack = [4, 3, 2, 1, 3];
const stack = evaluate("{ 4 3 2 1 2 index }");
const expectedStack = [4, 3, 2, 1, 3];
expect(stack).toMatchArray(expectedStack);
});
it("handles less than or equal to", function () {
var stack = evaluate("{ 9 10 le }");
var expectedStack = [true];
const stack = evaluate("{ 9 10 le }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects greater than for less than or equal to", function () {
var stack = evaluate("{ 10 9 le }");
var expectedStack = [false];
const stack = evaluate("{ 10 9 le }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the natural logarithm", function () {
var stack = evaluate("{ 10 ln }");
var expectedStack = [Math.log(10)];
const stack = evaluate("{ 10 ln }");
const expectedStack = [Math.log(10)];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the base 10 logarithm", function () {
var stack = evaluate("{ 100 log }");
var expectedStack = [2];
const stack = evaluate("{ 100 log }");
const expectedStack = [2];
expect(stack).toMatchArray(expectedStack);
});
it("handles less than", function () {
var stack = evaluate("{ 9 10 lt }");
var expectedStack = [true];
const stack = evaluate("{ 9 10 lt }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects greater than or equal to for less than", function () {
var stack = evaluate("{ 10 9 lt }");
var expectedStack = [false];
const stack = evaluate("{ 10 9 lt }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("performs the modulo operation", function () {
var stack = evaluate("{ 4 3 mod }");
var expectedStack = [1];
const stack = evaluate("{ 4 3 mod }");
const expectedStack = [1];
expect(stack).toMatchArray(expectedStack);
});
it("multiplies two numbers (positive result)", function () {
var stack = evaluate("{ 9 8 mul }");
var expectedStack = [72];
const stack = evaluate("{ 9 8 mul }");
const expectedStack = [72];
expect(stack).toMatchArray(expectedStack);
});
it("multiplies two numbers (negative result)", function () {
var stack = evaluate("{ 9 -8 mul }");
var expectedStack = [-72];
const stack = evaluate("{ 9 -8 mul }");
const expectedStack = [-72];
expect(stack).toMatchArray(expectedStack);
});
it("accepts an inequality", function () {
var stack = evaluate("{ 9 8 ne }");
var expectedStack = [true];
const stack = evaluate("{ 9 8 ne }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("rejects an equality", function () {
var stack = evaluate("{ 9 9 ne }");
var expectedStack = [false];
const stack = evaluate("{ 9 9 ne }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("negates", function () {
var stack = evaluate("{ 4.5 neg }");
var expectedStack = [-4.5];
const stack = evaluate("{ 4.5 neg }");
const expectedStack = [-4.5];
expect(stack).toMatchArray(expectedStack);
});
it("boolean not", function () {
var stack = evaluate("{ true not }");
var expectedStack = [false];
const stack = evaluate("{ true not }");
const expectedStack = [false];
expect(stack).toMatchArray(expectedStack);
});
it("bitwise not", function () {
var stack = evaluate("{ 12 not }");
var expectedStack = [-13];
const stack = evaluate("{ 12 not }");
const expectedStack = [-13];
expect(stack).toMatchArray(expectedStack);
});
it("boolean or", function () {
var stack = evaluate("{ true false or }");
var expectedStack = [true];
const stack = evaluate("{ true false or }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("bitwise or", function () {
var stack = evaluate("{ 254 1 or }");
var expectedStack = [254 | 1];
const stack = evaluate("{ 254 1 or }");
const expectedStack = [254 | 1];
expect(stack).toMatchArray(expectedStack);
});
it("pops stack", function () {
var stack = evaluate("{ 1 2 pop }");
var expectedStack = [1];
const stack = evaluate("{ 1 2 pop }");
const expectedStack = [1];
expect(stack).toMatchArray(expectedStack);
});
it("rolls stack right", function () {
var stack = evaluate("{ 1 3 2 2 4 1 roll }");
var expectedStack = [2, 1, 3, 2];
const stack = evaluate("{ 1 3 2 2 4 1 roll }");
const expectedStack = [2, 1, 3, 2];
expect(stack).toMatchArray(expectedStack);
});
it("rolls stack left", function () {
var stack = evaluate("{ 1 3 2 2 4 -1 roll }");
var expectedStack = [3, 2, 2, 1];
const stack = evaluate("{ 1 3 2 2 4 -1 roll }");
const expectedStack = [3, 2, 2, 1];
expect(stack).toMatchArray(expectedStack);
});
it("rounds a number", function () {
var stack = evaluate("{ 9.52 round }");
var expectedStack = [10];
const stack = evaluate("{ 9.52 round }");
const expectedStack = [10];
expect(stack).toMatchArray(expectedStack);
});
it("calculates the sine of a number", function () {
var stack = evaluate("{ 90 sin }");
var expectedStack = [Math.sin(90)];
const stack = evaluate("{ 90 sin }");
const expectedStack = [Math.sin(90)];
expect(stack).toMatchArray(expectedStack);
});
it("calculates a square root (integer)", function () {
var stack = evaluate("{ 100 sqrt }");
var expectedStack = [10];
const stack = evaluate("{ 100 sqrt }");
const expectedStack = [10];
expect(stack).toMatchArray(expectedStack);
});
it("calculates a square root (float)", function () {
var stack = evaluate("{ 99 sqrt }");
var expectedStack = [Math.sqrt(99)];
const stack = evaluate("{ 99 sqrt }");
const expectedStack = [Math.sqrt(99)];
expect(stack).toMatchArray(expectedStack);
});
it("subtracts (positive result)", function () {
var stack = evaluate("{ 6 4 sub }");
var expectedStack = [2];
const stack = evaluate("{ 6 4 sub }");
const expectedStack = [2];
expect(stack).toMatchArray(expectedStack);
});
it("subtracts (negative result)", function () {
var stack = evaluate("{ 4 6 sub }");
var expectedStack = [-2];
const stack = evaluate("{ 4 6 sub }");
const expectedStack = [-2];
expect(stack).toMatchArray(expectedStack);
});
it("pushes true onto the stack", function () {
var stack = evaluate("{ true }");
var expectedStack = [true];
const stack = evaluate("{ true }");
const expectedStack = [true];
expect(stack).toMatchArray(expectedStack);
});
it("truncates a number", function () {
var stack = evaluate("{ 35.004 truncate }");
var expectedStack = [35];
const stack = evaluate("{ 35.004 truncate }");
const expectedStack = [35];
expect(stack).toMatchArray(expectedStack);
});
it("calculates an exclusive or value", function () {
var stack = evaluate("{ 3 9 xor }");
var expectedStack = [10];
const stack = evaluate("{ 3 9 xor }");
const expectedStack = [10];
expect(stack).toMatchArray(expectedStack);
});
});
describe("PostScriptCompiler", function () {
function check(code, domain, range, samples) {
var compiler = new PostScriptCompiler();
var compiledCode = compiler.compile(code, domain, range);
const compiler = new PostScriptCompiler();
const compiledCode = compiler.compile(code, domain, range);
if (samples === null) {
expect(compiledCode).toBeNull();
} else {
expect(compiledCode).not.toBeNull();
// eslint-disable-next-line no-new-func
var fn = new Function(
const fn = new Function(
"src",
"srcOffset",
"dest",
"destOffset",
compiledCode
);
for (var i = 0; i < samples.length; i++) {
var out = new Float32Array(samples[i].output.length);
for (let i = 0; i < samples.length; i++) {
const out = new Float32Array(samples[i].output.length);
fn(samples[i].input, 0, out, 0);
expect(Array.prototype.slice.call(out, 0)).toMatchArray(
samples[i].output
@ -620,9 +620,9 @@ describe("function", function () {
check([], [0, 10000], [100, 1001], [{ input: [1000], output: [1000] }]);
});
it("compile optimized", function () {
var compiler = new PostScriptCompiler();
var code = [0, "add", 1, 1, 3, -1, "roll", "sub", "sub", 1, "mul"];
var compiledCode = compiler.compile(code, [0, 1], [0, 1]);
const compiler = new PostScriptCompiler();
const code = [0, "add", 1, 1, 3, -1, "roll", "sub", "sub", 1, "mul"];
const compiledCode = compiler.compile(code, [0, 1], [0, 1]);
expect(compiledCode).toEqual(
"dest[destOffset + 0] = Math.max(0, Math.min(1, src[srcOffset + 0]));"
);

View File

@ -124,36 +124,36 @@ function initializePDFJS(callback) {
jasmineRequire.html(jasmine);
var env = jasmine.getEnv();
const env = jasmine.getEnv();
var jasmineInterface = jasmineRequire.interface(jasmine, env);
const jasmineInterface = jasmineRequire.interface(jasmine, env);
extend(window, jasmineInterface);
// Runner Parameters
var queryString = new jasmine.QueryString({
const queryString = new jasmine.QueryString({
getWindowLocation() {
return window.location;
},
});
var config = {
const config = {
failFast: queryString.getParam("failFast"),
oneFailurePerSpec: queryString.getParam("oneFailurePerSpec"),
hideDisabled: queryString.getParam("hideDisabled"),
};
var random = queryString.getParam("random");
const random = queryString.getParam("random");
if (random !== undefined && random !== "") {
config.random = random;
}
var seed = queryString.getParam("seed");
const seed = queryString.getParam("seed");
if (seed) {
config.seed = seed;
}
// Reporters
var htmlReporter = new jasmine.HtmlReporter({
const htmlReporter = new jasmine.HtmlReporter({
env,
navigateWithNewParam(key, value) {
return queryString.navigateWithNewParam(key, value);
@ -176,13 +176,13 @@ function initializePDFJS(callback) {
env.addReporter(htmlReporter);
if (queryString.getParam("browser")) {
var testReporter = new TestReporter(queryString.getParam("browser"));
const testReporter = new TestReporter(queryString.getParam("browser"));
env.addReporter(testReporter);
}
// Filter which specs will be run by matching the start of the full name
// against the `spec` query param.
var specFilter = new jasmine.HtmlSpecFilter({
const specFilter = new jasmine.HtmlSpecFilter({
filterString() {
return queryString.getParam("spec");
},
@ -200,7 +200,7 @@ function initializePDFJS(callback) {
// Replace the browser window's `onload`, ensure it's called, and then run
// all of the loaded specs. This includes initializing the `HtmlReporter`
// instance and then executing the loaded Jasmine environment.
var currentWindowOnload = window.onload;
const currentWindowOnload = window.onload;
window.onload = function () {
if (currentWindowOnload) {
@ -214,7 +214,7 @@ function initializePDFJS(callback) {
};
function extend(destination, source) {
for (var property in source) {
for (const property in source) {
destination[property] = source[property];
}
return destination;

View File

@ -17,49 +17,47 @@ import { MurmurHash3_64 } from "../../src/core/murmurhash3.js";
describe("MurmurHash3_64", function () {
it("instantiates without seed", function () {
var hash = new MurmurHash3_64();
const hash = new MurmurHash3_64();
expect(hash).toEqual(jasmine.any(MurmurHash3_64));
});
it("instantiates with seed", function () {
var hash = new MurmurHash3_64(1);
const hash = new MurmurHash3_64(1);
expect(hash).toEqual(jasmine.any(MurmurHash3_64));
});
var hexDigestExpected = "f61cfdbfdae0f65e";
var sourceText = "test";
var sourceCharCodes = [116, 101, 115, 116]; // 't','e','s','t'
const hexDigestExpected = "f61cfdbfdae0f65e";
const sourceText = "test";
const sourceCharCodes = [116, 101, 115, 116]; // 't','e','s','t'
it("correctly generates a hash from a string", function () {
var hash = new MurmurHash3_64();
const hash = new MurmurHash3_64();
hash.update(sourceText);
expect(hash.hexdigest()).toEqual(hexDigestExpected);
});
it("correctly generates a hash from a Uint8Array", function () {
var hash = new MurmurHash3_64();
const hash = new MurmurHash3_64();
hash.update(new Uint8Array(sourceCharCodes));
expect(hash.hexdigest()).toEqual(hexDigestExpected);
});
it("correctly generates a hash from a Uint32Array", function () {
var hash = new MurmurHash3_64();
const hash = new MurmurHash3_64();
hash.update(new Uint32Array(new Uint8Array(sourceCharCodes).buffer));
expect(hash.hexdigest()).toEqual(hexDigestExpected);
});
it("changes the hash after update without seed", function () {
var hash = new MurmurHash3_64();
var hexdigest1, hexdigest2;
const hash = new MurmurHash3_64();
hash.update(sourceText);
hexdigest1 = hash.hexdigest();
const hexdigest1 = hash.hexdigest();
hash.update(sourceText);
hexdigest2 = hash.hexdigest();
const hexdigest2 = hash.hexdigest();
expect(hexdigest1).not.toEqual(hexdigest2);
});
it("changes the hash after update with seed", function () {
var hash = new MurmurHash3_64(1);
var hexdigest1, hexdigest2;
const hash = new MurmurHash3_64(1);
hash.update(sourceText);
hexdigest1 = hash.hexdigest();
const hexdigest1 = hash.hexdigest();
hash.update(sourceText);
hexdigest2 = hash.hexdigest();
const hexdigest2 = hash.hexdigest();
expect(hexdigest1).not.toEqual(hexdigest2);
});
});

View File

@ -17,28 +17,28 @@ import { AbortException } from "../../src/shared/util.js";
import { PDFNetworkStream } from "../../src/display/network.js";
describe("network", function () {
var pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href;
var pdf1Length = 1016315;
const pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href;
const pdf1Length = 1016315;
it("read without stream and range", function (done) {
var stream = new PDFNetworkStream({
const stream = new PDFNetworkStream({
url: pdf1,
rangeChunkSize: 65536,
disableStream: true,
disableRange: true,
});
var fullReader = stream.getFullReader();
const fullReader = stream.getFullReader();
var isStreamingSupported, isRangeSupported;
var promise = fullReader.headersReady.then(function () {
let isStreamingSupported, isRangeSupported;
const promise = fullReader.headersReady.then(function () {
isStreamingSupported = fullReader.isStreamingSupported;
isRangeSupported = fullReader.isRangeSupported;
});
var len = 0,
let len = 0,
count = 0;
var read = function () {
const read = function () {
return fullReader.read().then(function (result) {
if (result.done) {
return undefined;
@ -49,7 +49,7 @@ describe("network", function () {
});
};
var readPromise = Promise.all([read(), promise]);
const readPromise = Promise.all([read(), promise]);
readPromise
.then(function (page) {
@ -67,8 +67,8 @@ describe("network", function () {
it("read custom ranges", function (done) {
// We don't test on browsers that don't support range request, so
// requiring this test to pass.
var rangeSize = 32768;
var stream = new PDFNetworkStream({
const rangeSize = 32768;
const stream = new PDFNetworkStream({
url: pdf1,
length: pdf1Length,
rangeChunkSize: rangeSize,
@ -76,10 +76,10 @@ describe("network", function () {
disableRange: false,
});
var fullReader = stream.getFullReader();
const fullReader = stream.getFullReader();
var isStreamingSupported, isRangeSupported, fullReaderCancelled;
var promise = fullReader.headersReady.then(function () {
let isStreamingSupported, isRangeSupported, fullReaderCancelled;
const promise = fullReader.headersReady.then(function () {
isStreamingSupported = fullReader.isStreamingSupported;
isRangeSupported = fullReader.isRangeSupported;
// we shall be able to close the full reader without issues
@ -88,17 +88,20 @@ describe("network", function () {
});
// Skipping fullReader results, requesting something from the PDF end.
var tailSize = pdf1Length % rangeSize || rangeSize;
const tailSize = pdf1Length % rangeSize || rangeSize;
var range1Reader = stream.getRangeReader(
const range1Reader = stream.getRangeReader(
pdf1Length - tailSize - rangeSize,
pdf1Length - tailSize
);
var range2Reader = stream.getRangeReader(pdf1Length - tailSize, pdf1Length);
const range2Reader = stream.getRangeReader(
pdf1Length - tailSize,
pdf1Length
);
var result1 = { value: 0 },
const result1 = { value: 0 },
result2 = { value: 0 };
var read = function (reader, lenResult) {
const read = function (reader, lenResult) {
return reader.read().then(function (result) {
if (result.done) {
return undefined;
@ -108,7 +111,7 @@ describe("network", function () {
});
};
var readPromises = Promise.all([
const readPromises = Promise.all([
read(range1Reader, result1),
read(range2Reader, result2),
promise,

View File

@ -22,7 +22,7 @@ describe("stream", function () {
toMatchTypedArray(util, customEqualityTesters) {
return {
compare(actual, expected) {
var result = {};
const result = {};
if (actual.length !== expected.length) {
result.pass = false;
result.message =
@ -33,8 +33,8 @@ describe("stream", function () {
return result;
}
result.pass = true;
for (var i = 0, ii = expected.length; i < ii; i++) {
var a = actual[i],
for (let i = 0, ii = expected.length; i < ii; i++) {
const a = actual[i],
b = expected[i];
if (a !== b) {
result.pass = false;
@ -49,20 +49,20 @@ describe("stream", function () {
});
describe("PredictorStream", function () {
it("should decode simple predictor data", function () {
var dict = new Dict();
const dict = new Dict();
dict.set("Predictor", 12);
dict.set("Colors", 1);
dict.set("BitsPerComponent", 8);
dict.set("Columns", 2);
var input = new Stream(
const input = new Stream(
new Uint8Array([2, 100, 3, 2, 1, 255, 2, 1, 255]),
0,
9,
dict
);
var predictor = new PredictorStream(input, /* length = */ 9, dict);
var result = predictor.getBytes(6);
const predictor = new PredictorStream(input, /* length = */ 9, dict);
const result = predictor.getBytes(6);
expect(result).toMatchTypedArray(
new Uint8Array([100, 3, 101, 2, 102, 1])

View File

@ -1,9 +1,9 @@
"use strict";
// eslint-disable-next-line no-unused-vars
var TestReporter = function (browser) {
const TestReporter = function (browser) {
function send(action, json, cb) {
var r = new XMLHttpRequest();
const r = new XMLHttpRequest();
// (The POST URI is ignored atm.)
r.open("POST", action, true);
r.setRequestHeader("Content-Type", "application/json");
@ -28,7 +28,7 @@ var TestReporter = function (browser) {
}
function sendResult(status, description, error) {
var message = {
const message = {
status,
description,
};

View File

@ -19,8 +19,8 @@ import { Type1Parser } from "../../src/core/type1_parser.js";
describe("Type1Parser", function () {
it("splits tokens", function () {
var stream = new StringStream("/BlueValues[-17 0]noaccess def");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const stream = new StringStream("/BlueValues[-17 0]noaccess def");
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.getToken()).toEqual("/");
expect(parser.getToken()).toEqual("BlueValues");
expect(parser.getToken()).toEqual("[");
@ -33,36 +33,36 @@ describe("Type1Parser", function () {
});
it("handles glued tokens", function () {
var stream = new StringStream("dup/CharStrings");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const stream = new StringStream("dup/CharStrings");
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.getToken()).toEqual("dup");
expect(parser.getToken()).toEqual("/");
expect(parser.getToken()).toEqual("CharStrings");
});
it("ignores whitespace", function () {
var stream = new StringStream("\nab c\t");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const stream = new StringStream("\nab c\t");
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.getToken()).toEqual("ab");
expect(parser.getToken()).toEqual("c");
});
it("parses numbers", function () {
var stream = new StringStream("123");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const stream = new StringStream("123");
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.readNumber()).toEqual(123);
});
it("parses booleans", function () {
var stream = new StringStream("true false");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const stream = new StringStream("true false");
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.readBoolean()).toEqual(1);
expect(parser.readBoolean()).toEqual(0);
});
it("parses number arrays", function () {
var stream = new StringStream("[1 2]");
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
let stream = new StringStream("[1 2]");
let parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.readNumberArray()).toEqual([1, 2]);
// Variation on spacing.
stream = new StringStream("[ 1 2 ]");
@ -71,18 +71,18 @@ describe("Type1Parser", function () {
});
it("skips comments", function () {
var stream = new StringStream(
const stream = new StringStream(
"%!PS-AdobeFont-1.0: CMSY10 003.002\n" +
"%%Title: CMSY10\n" +
"%Version: 003.002\n" +
"FontDirectory"
);
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
expect(parser.getToken()).toEqual("FontDirectory");
});
it("parses font program", function () {
var stream = new StringStream(
const stream = new StringStream(
"/ExpansionFactor 99\n" +
"/Subrs 1 array\n" +
"dup 0 1 RD x noaccess put\n" +
@ -91,31 +91,31 @@ describe("Type1Parser", function () {
"/.notdef 1 RD x ND\n" +
"end"
);
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
var program = parser.extractFontProgram({});
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const program = parser.extractFontProgram({});
expect(program.charstrings.length).toEqual(1);
expect(program.properties.privateData.ExpansionFactor).toEqual(99);
});
it("parses font header font matrix", function () {
var stream = new StringStream(
const stream = new StringStream(
"/FontMatrix [0.001 0 0 0.001 0 0 ]readonly def\n"
);
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
var props = {};
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const props = {};
parser.extractFontHeader(props);
expect(props.fontMatrix).toEqual([0.001, 0, 0, 0.001, 0, 0]);
});
it("parses font header encoding", function () {
var stream = new StringStream(
const stream = new StringStream(
"/Encoding 256 array\n" +
"0 1 255 {1 index exch /.notdef put} for\n" +
"dup 33 /arrowright put\n" +
"readonly def\n"
);
var parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
var props = { overridableEncoding: true };
const parser = new Type1Parser(stream, false, SEAC_ANALYSIS_ENABLED);
const props = { overridableEncoding: true };
parser.extractFontHeader(props);
expect(props.builtInEncoding[33]).toEqual("arrowright");
});

View File

@ -145,12 +145,12 @@ describe("ui_utils", function () {
});
it("gets PDF filename from URI-encoded data", function () {
var encodedUrl = encodeURIComponent(
const encodedUrl = encodeURIComponent(
"http://www.example.com/pdfs/file1.pdf"
);
expect(getPDFFileNameFromURL(encodedUrl)).toEqual("file1.pdf");
var encodedUrlWithQuery = encodeURIComponent(
const encodedUrlWithQuery = encodeURIComponent(
"http://www.example.com/pdfs/file.txt?file2.pdf"
);
expect(getPDFFileNameFromURL(encodedUrlWithQuery)).toEqual("file2.pdf");
@ -185,8 +185,8 @@ describe("ui_utils", function () {
if (isNodeJS) {
pending("Blob in not supported in Node.js.");
}
var typedArray = new Uint8Array([1, 2, 3, 4, 5]);
var blobUrl = createObjectURL(typedArray, "application/pdf");
const typedArray = new Uint8Array([1, 2, 3, 4, 5]);
const blobUrl = createObjectURL(typedArray, "application/pdf");
// Sanity check to ensure that a "blob:" URL was returned.
expect(blobUrl.startsWith("blob:")).toEqual(true);
@ -194,8 +194,8 @@ describe("ui_utils", function () {
});
it('gets fallback filename from query string appended to "data:" URL', function () {
var typedArray = new Uint8Array([1, 2, 3, 4, 5]);
var dataUrl = createObjectURL(
const typedArray = new Uint8Array([1, 2, 3, 4, 5]);
const dataUrl = createObjectURL(
typedArray,
"application/pdf",
/* forceDataSchema = */ true
@ -216,8 +216,8 @@ describe("ui_utils", function () {
describe("EventBus", function () {
it("dispatch event", function () {
var eventBus = new EventBus();
var count = 0;
const eventBus = new EventBus();
let count = 0;
eventBus.on("test", function (evt) {
expect(evt).toEqual(undefined);
count++;
@ -238,8 +238,8 @@ describe("ui_utils", function () {
expect(count).toEqual(1);
});
it("dispatch different event", function () {
var eventBus = new EventBus();
var count = 0;
const eventBus = new EventBus();
let count = 0;
eventBus.on("test", function () {
count++;
});
@ -247,8 +247,8 @@ describe("ui_utils", function () {
expect(count).toEqual(0);
});
it("dispatch event multiple times", function () {
var eventBus = new EventBus();
var count = 0;
const eventBus = new EventBus();
let count = 0;
eventBus.dispatch("test");
eventBus.on("test", function () {
count++;
@ -258,8 +258,8 @@ describe("ui_utils", function () {
expect(count).toEqual(2);
});
it("dispatch event to multiple handlers", function () {
var eventBus = new EventBus();
var count = 0;
const eventBus = new EventBus();
let count = 0;
eventBus.on("test", function () {
count++;
});
@ -270,9 +270,9 @@ describe("ui_utils", function () {
expect(count).toEqual(2);
});
it("dispatch to detached", function () {
var eventBus = new EventBus();
var count = 0;
var listener = function () {
const eventBus = new EventBus();
let count = 0;
const listener = function () {
count++;
};
eventBus.on("test", listener);
@ -282,8 +282,8 @@ describe("ui_utils", function () {
expect(count).toEqual(1);
});
it("dispatch to wrong detached", function () {
var eventBus = new EventBus();
var count = 0;
const eventBus = new EventBus();
let count = 0;
eventBus.on("test", function () {
count++;
});
@ -295,13 +295,13 @@ describe("ui_utils", function () {
expect(count).toEqual(2);
});
it("dispatch to detached during handling", function () {
var eventBus = new EventBus();
var count = 0;
var listener1 = function () {
const eventBus = new EventBus();
let count = 0;
const listener1 = function () {
eventBus.off("test", listener2);
count++;
};
var listener2 = function () {
const listener2 = function () {
eventBus.off("test", listener1);
count++;
};

View File

@ -43,7 +43,7 @@ describe("unicode", function () {
});
describe("getUnicodeForGlyph", function () {
var standardMap, dingbatsMap;
let standardMap, dingbatsMap;
beforeAll(function (done) {
standardMap = getGlyphsUnicode();
@ -88,7 +88,7 @@ describe("unicode", function () {
});
describe("getNormalizedUnicodes", function () {
var NormalizedUnicodes;
let NormalizedUnicodes;
beforeAll(function (done) {
NormalizedUnicodes = getNormalizedUnicodes();
@ -112,7 +112,7 @@ describe("unicode", function () {
});
describe("reverseIfRtl", function () {
var NormalizedUnicodes;
let NormalizedUnicodes;
function getGlyphUnicode(char) {
if (NormalizedUnicodes[char] !== undefined) {
@ -131,19 +131,19 @@ describe("unicode", function () {
});
it("should not reverse LTR characters", function () {
var A = getGlyphUnicode("A");
const A = getGlyphUnicode("A");
expect(reverseIfRtl(A)).toEqual("A");
var fi = getGlyphUnicode("\uFB01");
const fi = getGlyphUnicode("\uFB01");
expect(reverseIfRtl(fi)).toEqual("fi");
});
it("should reverse RTL characters", function () {
// Hebrew (no-op, since it's not a combined character)
var heAlef = getGlyphUnicode("\u05D0");
const heAlef = getGlyphUnicode("\u05D0");
expect(reverseIfRtl(heAlef)).toEqual("\u05D0");
// Arabic
var arAlef = getGlyphUnicode("\u0675");
const arAlef = getGlyphUnicode("\u0675");
expect(reverseIfRtl(arAlef)).toEqual("\u0674\u0627");
});
});