Files
SnapOtter/tests/unit/api/compress-pdf-params.test.ts
T

31 lines
1.1 KiB
TypeScript
Raw Normal View History

import { describe, expect, it } from "vitest";
import { paramsForQuality } from "../../../apps/api/src/routes/tools/compress-pdf.js";
describe("paramsForQuality", () => {
it("endpoints: q=100 preserves resolution at best quality; q=1 is smallest", () => {
const hi = paramsForQuality(100);
expect(hi.dpi).toBe(300);
expect(hi.qFactor).toBeCloseTo(0.1, 2);
const lo = paramsForQuality(1);
expect(lo.dpi).toBeLessThanOrEqual(30);
expect(lo.qFactor).toBeGreaterThan(2.0);
});
it("is monotonic in size: dpi non-decreasing and qFactor non-increasing as q rises", () => {
let prevDpi = 0;
let prevQf = Number.POSITIVE_INFINITY;
for (let q = 1; q <= 100; q++) {
const { dpi, qFactor } = paramsForQuality(q);
expect(dpi).toBeGreaterThanOrEqual(prevDpi);
expect(qFactor).toBeLessThanOrEqual(prevQf + 1e-9);
prevDpi = dpi;
prevQf = qFactor;
}
});
it("clamps out-of-range input", () => {
expect(paramsForQuality(0)).toEqual(paramsForQuality(1));
expect(paramsForQuality(200)).toEqual(paramsForQuality(100));
});
});