import assert from 'node:assert/strict' import { IMAGE_PREVIEW_ZOOM_MIN, IMAGE_PREVIEW_ZOOM_MAX, IMAGE_PREVIEW_ZOOM_STEP, clampPreviewZoom, computeFitBaseScale, buildPreviewTransformCss } from '../src/utils/image-preview-transform.js' assert.equal(IMAGE_PREVIEW_ZOOM_MIN, 0.5) assert.equal(IMAGE_PREVIEW_ZOOM_MAX, 5) assert.equal(IMAGE_PREVIEW_ZOOM_STEP, 0.15) assert.equal(clampPreviewZoom(0.1), 0.5) assert.equal(clampPreviewZoom(9), 5) assert.equal(clampPreviewZoom(1.234), 1.23) // 未旋转:640x400 装入 320x200 → scale = 0.5 assert.ok( Math.abs(computeFitBaseScale(640, 400, 0, 320, 200) - 0.5) < 1e-9 ) // 旋转 90°:外接 400x640 装入 320x200 → scale = min(320/400, 200/640) = 0.3125 assert.ok( Math.abs(computeFitBaseScale(640, 400, 90, 320, 200) - 0.3125) < 1e-9 ) assert.equal( buildPreviewTransformCss(10, -20, 90, 0.5), 'translate(10px, -20px) rotate(90deg) scale(0.5)' ) console.log('image-preview-transform ok')