diff --git a/test/unit/clitests.json b/test/unit/clitests.json index 8dd259caf..8aacd4a35 100644 --- a/test/unit/clitests.json +++ b/test/unit/clitests.json @@ -35,6 +35,7 @@ "pdf_find_controller_spec.js", "pdf_find_utils_spec.js", "pdf_history_spec.js", + "pdf_spec.js", "pdf_viewer_spec.js", "primitives_spec.js", "stream_spec.js", diff --git a/test/unit/jasmine-boot.js b/test/unit/jasmine-boot.js index 42a2ba6ca..5166390ab 100644 --- a/test/unit/jasmine-boot.js +++ b/test/unit/jasmine-boot.js @@ -65,9 +65,9 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/encodings_spec.js", "pdfjs-test/unit/evaluator_spec.js", "pdfjs-test/unit/event_utils_spec.js", - "pdfjs-test/unit/function_spec.js", "pdfjs-test/unit/fetch_stream_spec.js", "pdfjs-test/unit/font_substitutions_spec.js", + "pdfjs-test/unit/function_spec.js", "pdfjs-test/unit/message_handler_spec.js", "pdfjs-test/unit/metadata_spec.js", "pdfjs-test/unit/murmurhash3_spec.js", @@ -77,6 +77,7 @@ async function initializePDFJS(callback) { "pdfjs-test/unit/pdf_find_controller_spec.js", "pdfjs-test/unit/pdf_find_utils_spec.js", "pdfjs-test/unit/pdf_history_spec.js", + "pdfjs-test/unit/pdf_spec.js", "pdfjs-test/unit/pdf_viewer_spec.js", "pdfjs-test/unit/primitives_spec.js", "pdfjs-test/unit/scripting_spec.js", diff --git a/test/unit/pdf_spec.js b/test/unit/pdf_spec.js new file mode 100644 index 000000000..cc4e8e0de --- /dev/null +++ b/test/unit/pdf_spec.js @@ -0,0 +1,125 @@ +/* Copyright 2023 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { + AbortException, + AnnotationEditorParamsType, + AnnotationEditorType, + AnnotationMode, + CMapCompressionType, + createValidAbsoluteUrl, + FeatureTest, + ImageKind, + InvalidPDFException, + MissingPDFException, + normalizeUnicode, + OPS, + PasswordResponses, + PermissionFlag, + PromiseCapability, + shadow, + UnexpectedResponseException, + Util, + VerbosityLevel, +} from "../../src/shared/util.js"; +import { + build, + getDocument, + PDFDataRangeTransport, + PDFWorker, + version, +} from "../../src/display/api.js"; +import { + getFilenameFromUrl, + getPdfFilenameFromUrl, + getXfaPageViewport, + isDataScheme, + isPdfFile, + loadScript, + PDFDateString, + PixelsPerInch, + RenderingCancelledException, + setLayerDimensions, +} from "../../src/display/display_utils.js"; +import { + renderTextLayer, + updateTextLayer, +} from "../../src/display/text_layer.js"; +import { AnnotationEditorLayer } from "../../src/display/editor/annotation_editor_layer.js"; +import { AnnotationEditorUIManager } from "../../src/display/editor/tools.js"; +import { AnnotationLayer } from "../../src/display/annotation_layer.js"; +import { GlobalWorkerOptions } from "../../src/display/worker_options.js"; +import { XfaLayer } from "../../src/display/xfa_layer.js"; + +describe("pdfjs_api", function () { + it("checks that the *official* PDF.js API exposes the expected functionality", async function () { + // eslint-disable-next-line no-unsanitized/method + const pdfjsAPI = await import( + typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB") + ? "../../pdf.js" + : "../../src/pdf.js" + ); + + // The imported Object contains an (automatically) inserted Symbol, + // hence we copy the data to allow using a simple comparison below. + expect({ ...pdfjsAPI }).toEqual({ + AbortException, + AnnotationEditorLayer, + AnnotationEditorParamsType, + AnnotationEditorType, + AnnotationEditorUIManager, + AnnotationLayer, + AnnotationMode, + build, + CMapCompressionType, + createValidAbsoluteUrl, + FeatureTest, + getDocument, + getFilenameFromUrl, + getPdfFilenameFromUrl, + getXfaPageViewport, + GlobalWorkerOptions, + ImageKind, + InvalidPDFException, + isDataScheme, + isPdfFile, + loadScript, + MissingPDFException, + normalizeUnicode, + OPS, + PasswordResponses, + PDFDataRangeTransport, + PDFDateString, + PDFWorker, + PermissionFlag, + PixelsPerInch, + PromiseCapability, + RenderingCancelledException, + renderTextLayer, + setLayerDimensions, + shadow, + SVGGraphics: + typeof PDFJSDev !== "undefined" && PDFJSDev.test("LIB") + ? require("../../display/svg.js").SVGGraphics + : null, + UnexpectedResponseException, + updateTextLayer, + Util, + VerbosityLevel, + version, + XfaLayer, + }); + }); +});