fix(web/m7-364): keyboard reorder + measured row height + offsetToDelta helper
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
import { describe, it, expect } from 'vitest';
|
||||
import { offsetToDelta } from './queue-row-math';
|
||||
|
||||
describe('offsetToDelta', () => {
|
||||
it('returns 0 for zero offset', () => {
|
||||
expect(offsetToDelta(0, 64)).toBe(0);
|
||||
});
|
||||
|
||||
it('returns 1 for a full row down', () => {
|
||||
expect(offsetToDelta(64, 64)).toBe(1);
|
||||
});
|
||||
|
||||
it('rounds half-rows down (just under midpoint)', () => {
|
||||
expect(offsetToDelta(31, 64)).toBe(0);
|
||||
});
|
||||
|
||||
it('rounds half-rows up (at or past midpoint)', () => {
|
||||
expect(offsetToDelta(32, 64)).toBe(1);
|
||||
});
|
||||
|
||||
it('handles negative offsets symmetrically (drag up)', () => {
|
||||
expect(offsetToDelta(-64, 64)).toBe(-1);
|
||||
expect(offsetToDelta(-32, 64)).toBe(0); // Math.round(-0.5) === 0 in JS
|
||||
});
|
||||
|
||||
it('handles multi-row offsets', () => {
|
||||
expect(offsetToDelta(192, 64)).toBe(3);
|
||||
expect(offsetToDelta(-128, 64)).toBe(-2);
|
||||
});
|
||||
|
||||
it('returns 0 when rowHeight is non-positive (defensive)', () => {
|
||||
expect(offsetToDelta(100, 0)).toBe(0);
|
||||
expect(offsetToDelta(100, -1)).toBe(0);
|
||||
});
|
||||
|
||||
it('respects the measured row height (e.g., h-14 = 56px)', () => {
|
||||
expect(offsetToDelta(56, 56)).toBe(1);
|
||||
expect(offsetToDelta(28, 56)).toBe(1); // 0.5 → 1 (half-up)
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user