Skip to content

Commit

Permalink
Merge pull request #12837 from Snuffleupagus/unit-test-factories
Browse files Browse the repository at this point in the history
Remove unncessary `CanvasFactory`/`CMapReaderFactory`/`FileReaderFactory` duplication in unit-tests
  • Loading branch information
timvandermeij authored Jan 8, 2021
2 parents 6089b8f + 941b65f commit 5fed652
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 115 deletions.
2 changes: 2 additions & 0 deletions src/display/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -3060,4 +3060,6 @@ export {
setPDFNetworkStreamFactory,
version,
build,
DefaultCanvasFactory,
DefaultCMapReaderFactory,
};
33 changes: 9 additions & 24 deletions test/unit/annotation_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,21 +29,14 @@ import {
stringToBytes,
stringToUTF8String,
} from "../../src/shared/util.js";
import { createIdFactory, XRefMock } from "./test_utils.js";
import { CMAP_PARAMS, createIdFactory, XRefMock } from "./test_utils.js";
import { Dict, Name, Ref, RefSetCache } from "../../src/core/primitives.js";
import { Lexer, Parser } from "../../src/core/parser.js";
import { DOMCMapReaderFactory } from "../../src/display/display_utils.js";
import { isNodeJS } from "../../src/shared/is_node.js";
import { NodeCMapReaderFactory } from "../../src/display/node_utils.js";
import { DefaultCMapReaderFactory } from "../../src/display/api.js";
import { PartialEvaluator } from "../../src/core/evaluator.js";
import { StringStream } from "../../src/core/stream.js";
import { WorkerTask } from "../../src/core/worker.js";

const cMapUrl = {
dom: "../../external/bcmaps/",
node: "./external/bcmaps/",
};

describe("annotation", function () {
class PDFManagerMock {
constructor(params) {
Expand Down Expand Up @@ -86,32 +79,24 @@ describe("annotation", function () {

let pdfManagerMock, idFactoryMock, partialEvaluator;

beforeAll(function (done) {
beforeAll(async function (done) {
pdfManagerMock = new PDFManagerMock({
docBaseUrl: null,
});

let CMapReaderFactory;
if (isNodeJS) {
CMapReaderFactory = new NodeCMapReaderFactory({
baseUrl: cMapUrl.node,
isCompressed: true,
});
} else {
CMapReaderFactory = new DOMCMapReaderFactory({
baseUrl: cMapUrl.dom,
isCompressed: true,
});
}
const CMapReaderFactory = new DefaultCMapReaderFactory({
baseUrl: CMAP_PARAMS.cMapUrl,
isCompressed: CMAP_PARAMS.cMapPacked,
});

const builtInCMapCache = new Map();
builtInCMapCache.set(
"UniJIS-UTF16-H",
CMapReaderFactory.fetch({ name: "UniJIS-UTF16-H" })
await CMapReaderFactory.fetch({ name: "UniJIS-UTF16-H" })
);
builtInCMapCache.set(
"Adobe-Japan1-UCS2",
CMapReaderFactory.fetch({ name: "Adobe-Japan1-UCS2" })
await CMapReaderFactory.fetch({ name: "Adobe-Japan1-UCS2" })
);

idFactoryMock = createIdFactory(/* pageIndex = */ 0);
Expand Down
45 changes: 13 additions & 32 deletions test/unit/api_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@

import {
buildGetDocumentParams,
DOMFileReaderFactory,
NodeFileReaderFactory,
DefaultFileReaderFactory,
TEST_PDFS_PATH,
} from "./test_utils.js";
import {
Expand All @@ -32,23 +31,22 @@ import {
StreamType,
} from "../../src/shared/util.js";
import {
DOMCanvasFactory,
RenderingCancelledException,
StatTimer,
} from "../../src/display/display_utils.js";
import {
DefaultCanvasFactory,
getDocument,
PDFDataRangeTransport,
PDFDocumentProxy,
PDFPageProxy,
PDFWorker,
} from "../../src/display/api.js";
import {
RenderingCancelledException,
StatTimer,
} from "../../src/display/display_utils.js";
import { AutoPrintRegExp } from "../../web/ui_utils.js";
import { GlobalImageCache } from "../../src/core/image_utils.js";
import { GlobalWorkerOptions } from "../../src/display/worker_options.js";
import { isNodeJS } from "../../src/shared/is_node.js";
import { Metadata } from "../../src/display/metadata.js";
import { NodeCanvasFactory } from "../../src/display/node_utils.js";

describe("api", function () {
const basicApiFileName = "basicapi.pdf";
Expand All @@ -58,11 +56,7 @@ describe("api", function () {
let CanvasFactory;

beforeAll(function (done) {
if (isNodeJS) {
CanvasFactory = new NodeCanvasFactory();
} else {
CanvasFactory = new DOMCanvasFactory();
}
CanvasFactory = new DefaultCanvasFactory();
done();
});

Expand Down Expand Up @@ -132,16 +126,9 @@ describe("api", function () {
.catch(done.fail);
});
it("creates pdf doc from typed array", function (done) {
let typedArrayPdfPromise;
if (isNodeJS) {
typedArrayPdfPromise = NodeFileReaderFactory.fetch({
path: TEST_PDFS_PATH.node + basicApiFileName,
});
} else {
typedArrayPdfPromise = DOMFileReaderFactory.fetch({
path: TEST_PDFS_PATH.dom + basicApiFileName,
});
}
const typedArrayPdfPromise = DefaultFileReaderFactory.fetch({
path: TEST_PDFS_PATH + basicApiFileName,
});

typedArrayPdfPromise
.then(typedArrayPdf => {
Expand Down Expand Up @@ -2197,15 +2184,9 @@ describe("api", function () {

beforeAll(function (done) {
const fileName = "tracemonkey.pdf";
if (isNodeJS) {
dataPromise = NodeFileReaderFactory.fetch({
path: TEST_PDFS_PATH.node + fileName,
});
} else {
dataPromise = DOMFileReaderFactory.fetch({
path: TEST_PDFS_PATH.dom + fileName,
});
}
dataPromise = DefaultFileReaderFactory.fetch({
path: TEST_PDFS_PATH + fileName,
});
done();
});

Expand Down
49 changes: 13 additions & 36 deletions test/unit/cmap_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,35 +14,20 @@
*/

import { CMap, CMapFactory, IdentityCMap } from "../../src/core/cmap.js";
import { DOMCMapReaderFactory } from "../../src/display/display_utils.js";
import { isNodeJS } from "../../src/shared/is_node.js";
import { CMAP_PARAMS } from "./test_utils.js";
import { DefaultCMapReaderFactory } from "../../src/display/api.js";
import { Name } from "../../src/core/primitives.js";
import { NodeCMapReaderFactory } from "../../src/display/node_utils.js";
import { StringStream } from "../../src/core/stream.js";

const cMapUrl = {
dom: "../../external/bcmaps/",
node: "./external/bcmaps/",
};
const cMapPacked = true;

describe("cmap", function () {
let fetchBuiltInCMap;

beforeAll(function (done) {
// Allow CMap testing in Node.js, e.g. for Travis.
let CMapReaderFactory;
if (isNodeJS) {
CMapReaderFactory = new NodeCMapReaderFactory({
baseUrl: cMapUrl.node,
isCompressed: cMapPacked,
});
} else {
CMapReaderFactory = new DOMCMapReaderFactory({
baseUrl: cMapUrl.dom,
isCompressed: cMapPacked,
});
}
const CMapReaderFactory = new DefaultCMapReaderFactory({
baseUrl: CMAP_PARAMS.cMapUrl,
isCompressed: CMAP_PARAMS.cMapPacked,
});

fetchBuiltInCMap = function (name) {
return CMapReaderFactory.fetch({
Expand Down Expand Up @@ -298,9 +283,8 @@ describe("cmap", function () {

it("attempts to load a built-in CMap without the necessary API parameters", function (done) {
function tmpFetchBuiltInCMap(name) {
const CMapReaderFactory = isNodeJS
? new NodeCMapReaderFactory({})
: new DOMCMapReaderFactory({});
const CMapReaderFactory = new DefaultCMapReaderFactory({});

return CMapReaderFactory.fetch({
name,
});
Expand Down Expand Up @@ -328,18 +312,11 @@ describe("cmap", function () {

it("attempts to load a built-in CMap with inconsistent API parameters", function (done) {
function tmpFetchBuiltInCMap(name) {
let CMapReaderFactory;
if (isNodeJS) {
CMapReaderFactory = new NodeCMapReaderFactory({
baseUrl: cMapUrl.node,
isCompressed: false,
});
} else {
CMapReaderFactory = new DOMCMapReaderFactory({
baseUrl: cMapUrl.dom,
isCompressed: false,
});
}
const CMapReaderFactory = new DefaultCMapReaderFactory({
baseUrl: CMAP_PARAMS.cMapUrl,
isCompressed: false,
});

return CMapReaderFactory.fetch({
name,
});
Expand Down
16 changes: 4 additions & 12 deletions test/unit/custom_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,8 @@
* limitations under the License.
*/

import { DefaultCanvasFactory, getDocument } from "../../src/display/api.js";
import { buildGetDocumentParams } from "./test_utils.js";
import { DOMCanvasFactory } from "../../src/display/display_utils.js";
import { getDocument } from "../../src/display/api.js";
import { isNodeJS } from "../../src/shared/is_node.js";
import { NodeCanvasFactory } from "../../src/display/node_utils.js";

function getTopLeftPixel(canvasContext) {
const imgData = canvasContext.getImageData(0, 0, 1, 1);
Expand All @@ -39,11 +36,8 @@ describe("custom canvas rendering", function () {
let page;

beforeAll(function (done) {
if (isNodeJS) {
CanvasFactory = new NodeCanvasFactory();
} else {
CanvasFactory = new DOMCanvasFactory();
}
CanvasFactory = new DefaultCanvasFactory();

loadingTask = getDocument(transparentGetDocumentParams);
loadingTask.promise
.then(function (doc) {
Expand Down Expand Up @@ -156,10 +150,8 @@ describe("custom ownerDocument", function () {
getElementsByTagName: () => [{ appendChild: () => {} }],
},
};
const CanvasFactory = new DefaultCanvasFactory({ ownerDocument });

const CanvasFactory = isNodeJS
? new NodeCanvasFactory()
: new DOMCanvasFactory({ ownerDocument });
return {
elements,
ownerDocument,
Expand Down
27 changes: 16 additions & 11 deletions test/unit/test_utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,13 @@ import { assert } from "../../src/shared/util.js";
import { isNodeJS } from "../../src/shared/is_node.js";
import { StringStream } from "../../src/core/stream.js";

const TEST_PDFS_PATH = isNodeJS ? "./test/pdfs/" : "../pdfs/";

const CMAP_PARAMS = {
cMapUrl: isNodeJS ? "./external/bcmaps/" : "../../external/bcmaps/",
cMapPacked: true,
};

class DOMFileReaderFactory {
static async fetch(params) {
const response = await fetch(params.path);
Expand All @@ -45,18 +52,16 @@ class NodeFileReaderFactory {
}
}

const TEST_PDFS_PATH = {
dom: "../pdfs/",
node: "./test/pdfs/",
};
const DefaultFileReaderFactory = isNodeJS
? NodeFileReaderFactory
: DOMFileReaderFactory;

function buildGetDocumentParams(filename, options) {
const params = Object.create(null);
if (isNodeJS) {
params.url = TEST_PDFS_PATH.node + filename;
} else {
params.url = new URL(TEST_PDFS_PATH.dom + filename, window.location).href;
}
params.url = isNodeJS
? TEST_PDFS_PATH + filename
: new URL(TEST_PDFS_PATH + filename, window.location).href;

for (const option in options) {
params[option] = options[option];
}
Expand Down Expand Up @@ -136,11 +141,11 @@ function isEmptyObj(obj) {
}

export {
DOMFileReaderFactory,
NodeFileReaderFactory,
DefaultFileReaderFactory,
XRefMock,
buildGetDocumentParams,
TEST_PDFS_PATH,
CMAP_PARAMS,
createIdFactory,
isEmptyObj,
};

0 comments on commit 5fed652

Please sign in to comment.