Improve unit test coverage for primitives
This commit includes unit tests for: - `isEOF` - `isStream` - `Ref`'s string representation and caching - `Dict`'s XRef assignment
This commit is contained in:
parent
2bd0690fdd
commit
550a38f1ba
@ -16,15 +16,19 @@
|
|||||||
import {
|
import {
|
||||||
Cmd,
|
Cmd,
|
||||||
Dict,
|
Dict,
|
||||||
|
EOF,
|
||||||
isCmd,
|
isCmd,
|
||||||
isDict,
|
isDict,
|
||||||
|
isEOF,
|
||||||
isName,
|
isName,
|
||||||
isRef,
|
isRef,
|
||||||
isRefsEqual,
|
isRefsEqual,
|
||||||
|
isStream,
|
||||||
Name,
|
Name,
|
||||||
Ref,
|
Ref,
|
||||||
RefSet,
|
RefSet,
|
||||||
} from "../../src/core/primitives.js";
|
} from "../../src/core/primitives.js";
|
||||||
|
import { StringStream } from "../../src/core/stream.js";
|
||||||
import { XRefMock } from "./test_utils.js";
|
import { XRefMock } from "./test_utils.js";
|
||||||
|
|
||||||
describe("primitives", function () {
|
describe("primitives", function () {
|
||||||
@ -103,6 +107,15 @@ describe("primitives", function () {
|
|||||||
emptyDict = dictWithSizeKey = dictWithManyKeys = null;
|
emptyDict = dictWithSizeKey = dictWithManyKeys = null;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should allow assigning an XRef table after creation", function () {
|
||||||
|
const dict = new Dict(null);
|
||||||
|
expect(dict.xref).toEqual(null);
|
||||||
|
|
||||||
|
const xref = new XRefMock([]);
|
||||||
|
dict.assignXref(xref);
|
||||||
|
expect(dict.xref).toEqual(xref);
|
||||||
|
});
|
||||||
|
|
||||||
it("should return invalid values for unknown keys", function () {
|
it("should return invalid values for unknown keys", function () {
|
||||||
checkInvalidHasValues(emptyDict);
|
checkInvalidHasValues(emptyDict);
|
||||||
checkInvalidKeyValues(emptyDict);
|
checkInvalidKeyValues(emptyDict);
|
||||||
@ -276,6 +289,15 @@ describe("primitives", function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("Ref", function () {
|
describe("Ref", function () {
|
||||||
|
it("should get a string representation", function () {
|
||||||
|
const nonZeroRef = Ref.get(4, 2);
|
||||||
|
expect(nonZeroRef.toString()).toEqual("4R2");
|
||||||
|
|
||||||
|
// If the generation number is 0, a shorter representation is used.
|
||||||
|
const zeroRef = Ref.get(4, 0);
|
||||||
|
expect(zeroRef.toString()).toEqual("4R");
|
||||||
|
});
|
||||||
|
|
||||||
it("should retain the stored values", function () {
|
it("should retain the stored values", function () {
|
||||||
const storedNum = 4;
|
const storedNum = 4;
|
||||||
const storedGen = 2;
|
const storedGen = 2;
|
||||||
@ -283,6 +305,17 @@ describe("primitives", function () {
|
|||||||
expect(ref.num).toEqual(storedNum);
|
expect(ref.num).toEqual(storedNum);
|
||||||
expect(ref.gen).toEqual(storedGen);
|
expect(ref.gen).toEqual(storedGen);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should create only one object for a reference and cache it", function () {
|
||||||
|
const firstRef = Ref.get(4, 2);
|
||||||
|
const secondRef = Ref.get(4, 2);
|
||||||
|
const firstOtherRef = Ref.get(5, 2);
|
||||||
|
const secondOtherRef = Ref.get(5, 2);
|
||||||
|
|
||||||
|
expect(firstRef).toBe(secondRef);
|
||||||
|
expect(firstOtherRef).toBe(secondOtherRef);
|
||||||
|
expect(firstRef).not.toBe(firstOtherRef);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("RefSet", function () {
|
describe("RefSet", function () {
|
||||||
@ -303,6 +336,17 @@ describe("primitives", function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("isEOF", function () {
|
||||||
|
it("handles non-EOF", function () {
|
||||||
|
const nonEOF = "foo";
|
||||||
|
expect(isEOF(nonEOF)).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles EOF", function () {
|
||||||
|
expect(isEOF(EOF)).toEqual(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe("isName", function () {
|
describe("isName", function () {
|
||||||
it("handles non-names", function () {
|
it("handles non-names", function () {
|
||||||
const nonName = {};
|
const nonName = {};
|
||||||
@ -384,4 +428,16 @@ describe("primitives", function () {
|
|||||||
expect(isRefsEqual(ref1, ref2)).toEqual(false);
|
expect(isRefsEqual(ref1, ref2)).toEqual(false);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe("isStream", function () {
|
||||||
|
it("handles non-streams", function () {
|
||||||
|
const nonStream = {};
|
||||||
|
expect(isStream(nonStream)).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("handles streams", function () {
|
||||||
|
const stream = new StringStream("foo");
|
||||||
|
expect(isStream(stream)).toEqual(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user