import { describe, expect, it } from 'vitest'; import { PINCH_ZOOM_EXPONENT, WHEEL_LINE_PX, WHEEL_PAGE_PX, WHEEL_ZOOM_EXPONENT, } from '../App.consts.ts'; import { wheelZoom } from './input-wheel.ts'; const wheel = (deltaY: number, deltaMode = 0, ctrlKey = false) => wheelZoom({ deltaY, deltaMode, ctrlKey }); describe('CAD 휠 = 늘 줌(153-3)', () => { it('100 · 120 배수가 아닌 델타(확대율 90 % · 110 % · 트랙패드 잔 델타)도 줌', () => { for (const deltaY of [100, 120, 111.1, 90.9, 4, -100, -111.1, -4]) { expect(wheel(deltaY)).toEqual({ delta: -deltaY, exponent: WHEEL_ZOOM_EXPONENT }); } }); it('줄 · 쪽 단위는 픽셀로 환산', () => { expect(wheel(3, 1)).toEqual({ delta: -3 * WHEEL_LINE_PX, exponent: WHEEL_ZOOM_EXPONENT }); expect(wheel(-1, 2)).toEqual({ delta: WHEEL_PAGE_PX, exponent: WHEEL_ZOOM_EXPONENT }); }); it('ctrl+휠(핀치)은 핀치 지수', () => { expect(wheel(-7, 0, true)).toEqual({ delta: 7, exponent: PINCH_ZOOM_EXPONENT }); }); it('델타 0 은 안 움직임', () => { expect(wheel(0)).toBeNull(); expect(wheel(0, 0, true)).toBeNull(); }); });