test-image-preview-rotate.mjs 967 B

12345678910111213141516171819202122232425262728293031323334
  1. import assert from 'node:assert/strict'
  2. import {
  3. IMAGE_PREVIEW_ZOOM_MIN,
  4. IMAGE_PREVIEW_ZOOM_MAX,
  5. IMAGE_PREVIEW_ZOOM_STEP,
  6. clampPreviewZoom,
  7. computeFitBaseScale,
  8. buildPreviewTransformCss
  9. } from '../src/utils/image-preview-transform.js'
  10. assert.equal(IMAGE_PREVIEW_ZOOM_MIN, 0.5)
  11. assert.equal(IMAGE_PREVIEW_ZOOM_MAX, 5)
  12. assert.equal(IMAGE_PREVIEW_ZOOM_STEP, 0.15)
  13. assert.equal(clampPreviewZoom(0.1), 0.5)
  14. assert.equal(clampPreviewZoom(9), 5)
  15. assert.equal(clampPreviewZoom(1.234), 1.23)
  16. // 未旋转:640x400 装入 320x200 → scale = 0.5
  17. assert.ok(
  18. Math.abs(computeFitBaseScale(640, 400, 0, 320, 200) - 0.5) < 1e-9
  19. )
  20. // 旋转 90°:外接 400x640 装入 320x200 → scale = min(320/400, 200/640) = 0.3125
  21. assert.ok(
  22. Math.abs(computeFitBaseScale(640, 400, 90, 320, 200) - 0.3125) < 1e-9
  23. )
  24. assert.equal(
  25. buildPreviewTransformCss(10, -20, 90, 0.5),
  26. 'translate(10px, -20px) rotate(90deg) scale(0.5)'
  27. )
  28. console.log('image-preview-transform ok')