Files
Aislo/B07_DesignDetail/openwebcad/src/inputController/input-wheel.test.ts
T
eomsangdonandClaude Opus 5.5 7cad25bb7f feat(CAD): 휠 = 늘 줌(커서 중심) · 휠 처리를 input-wheel.ts 로 떼기(153-3)
- 마우스 · 트랙패드 판정 지움 — 확대율 100 % 아닌 화면에서 휠이 팬으로 먹히던 것
- 트랙패드 두 손가락 팬 없어짐 · 팬 = 가운데 단추 끌기
- vitest input-wheel.test.ts

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TNMXVCZXMpHpVvqmFkeChL
2026-10-09 19:06:37 +09:00

34 lines
1.1 KiB
TypeScript

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();
});
});