44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
import { resolvePlanarCursorPosition } from './planar-cursor-placement'
|
|
|
|
const snapHalf = (value: number) => Math.round(value / 0.5) * 0.5
|
|
|
|
describe('resolvePlanarCursorPosition', () => {
|
|
test('absolute mode places the point directly at the snapped cursor', () => {
|
|
const result = resolvePlanarCursorPosition({
|
|
cursor: [1.24, -2.26],
|
|
original: [10, 10],
|
|
anchor: null,
|
|
mode: 'absolute',
|
|
snap: snapHalf,
|
|
})
|
|
|
|
expect(result.point).toEqual([1, -2.5])
|
|
expect(result.anchor).toBeNull()
|
|
})
|
|
|
|
test('relative mode preserves the original grab offset from the first cursor sample', () => {
|
|
const start = resolvePlanarCursorPosition({
|
|
cursor: [4.1, 6.1],
|
|
original: [10, 20],
|
|
anchor: null,
|
|
mode: 'relative',
|
|
snap: snapHalf,
|
|
})
|
|
|
|
expect(start.point).toEqual([10, 20])
|
|
expect(start.anchor).toEqual([4.1, 6.1])
|
|
|
|
const moved = resolvePlanarCursorPosition({
|
|
cursor: [4.9, 5.2],
|
|
original: [10, 20],
|
|
anchor: start.anchor,
|
|
mode: 'relative',
|
|
snap: snapHalf,
|
|
})
|
|
|
|
expect(moved.point).toEqual([11, 19])
|
|
expect(moved.anchor).toEqual([4.1, 6.1])
|
|
})
|
|
})
|