2
0

pdf_viewer_spec.js 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. /**
  2. * @licstart The following is the entire license notice for the
  3. * JavaScript code in this page
  4. *
  5. * Copyright 2022 Mozilla Foundation
  6. *
  7. * Licensed under the Apache License, Version 2.0 (the "License");
  8. * you may not use this file except in compliance with the License.
  9. * You may obtain a copy of the License at
  10. *
  11. * http://www.apache.org/licenses/LICENSE-2.0
  12. *
  13. * Unless required by applicable law or agreed to in writing, software
  14. * distributed under the License is distributed on an "AS IS" BASIS,
  15. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16. * See the License for the specific language governing permissions and
  17. * limitations under the License.
  18. *
  19. * @licend The above is the entire license notice for the
  20. * JavaScript code in this page
  21. */
  22. "use strict";
  23. var _pdf_viewer = require("../../web/pdf_viewer.js");
  24. describe("PDFViewer", function () {
  25. describe("PDFPageViewBuffer", function () {
  26. function createViewsMap(startId, endId) {
  27. const map = new Map();
  28. for (let id = startId; id <= endId; id++) {
  29. map.set(id, {
  30. id,
  31. destroy: () => {}
  32. });
  33. }
  34. return map;
  35. }
  36. it("handles `push` correctly", function () {
  37. const buffer = new _pdf_viewer.PDFPageViewBuffer(3);
  38. const viewsMap = createViewsMap(1, 5),
  39. iterator = viewsMap.values();
  40. for (let i = 0; i < 3; i++) {
  41. const view = iterator.next().value;
  42. buffer.push(view);
  43. }
  44. expect([...buffer]).toEqual([viewsMap.get(1), viewsMap.get(2), viewsMap.get(3)]);
  45. for (let i = 3; i < 5; i++) {
  46. const view = iterator.next().value;
  47. buffer.push(view);
  48. }
  49. expect([...buffer]).toEqual([viewsMap.get(3), viewsMap.get(4), viewsMap.get(5)]);
  50. });
  51. it("handles `resize` correctly", function () {
  52. const buffer = new _pdf_viewer.PDFPageViewBuffer(5);
  53. const viewsMap = createViewsMap(1, 5),
  54. iterator = viewsMap.values();
  55. for (let i = 0; i < 5; i++) {
  56. const view = iterator.next().value;
  57. buffer.push(view);
  58. }
  59. buffer.resize(5);
  60. expect([...buffer]).toEqual([viewsMap.get(1), viewsMap.get(2), viewsMap.get(3), viewsMap.get(4), viewsMap.get(5)]);
  61. buffer.resize(10);
  62. expect([...buffer]).toEqual([viewsMap.get(1), viewsMap.get(2), viewsMap.get(3), viewsMap.get(4), viewsMap.get(5)]);
  63. buffer.resize(3);
  64. expect([...buffer]).toEqual([viewsMap.get(3), viewsMap.get(4), viewsMap.get(5)]);
  65. });
  66. it("handles `resize` correctly, with `idsToKeep` provided", function () {
  67. const buffer = new _pdf_viewer.PDFPageViewBuffer(5);
  68. const viewsMap = createViewsMap(1, 5),
  69. iterator = viewsMap.values();
  70. for (let i = 0; i < 5; i++) {
  71. const view = iterator.next().value;
  72. buffer.push(view);
  73. }
  74. buffer.resize(5, new Set([1, 2]));
  75. expect([...buffer]).toEqual([viewsMap.get(3), viewsMap.get(4), viewsMap.get(5), viewsMap.get(1), viewsMap.get(2)]);
  76. buffer.resize(10, new Set([3, 4, 5]));
  77. expect([...buffer]).toEqual([viewsMap.get(1), viewsMap.get(2), viewsMap.get(3), viewsMap.get(4), viewsMap.get(5)]);
  78. buffer.resize(3, new Set([1, 2, 5]));
  79. expect([...buffer]).toEqual([viewsMap.get(1), viewsMap.get(2), viewsMap.get(5)]);
  80. });
  81. it("handles `has` correctly", function () {
  82. const buffer = new _pdf_viewer.PDFPageViewBuffer(3);
  83. const viewsMap = createViewsMap(1, 2),
  84. iterator = viewsMap.values();
  85. for (let i = 0; i < 1; i++) {
  86. const view = iterator.next().value;
  87. buffer.push(view);
  88. }
  89. expect(buffer.has(viewsMap.get(1))).toEqual(true);
  90. expect(buffer.has(viewsMap.get(2))).toEqual(false);
  91. });
  92. });
  93. });