Plops editor: focus mode, place/move/resize, semantic zoom (#15)
Build image / build-and-push (push) Successful in 14s

Co-authored-by: Steve Dudenhoeffer <[email protected]>
This commit was merged in pull request #34.
This commit is contained in:
2026-07-19 03:22:51 +00:00
committed by steve
parent f4e5dab98c
commit 48ba08e8f2
14 changed files with 1084 additions and 73 deletions
+27
View File
@@ -0,0 +1,27 @@
import { describe, expect, it } from 'vitest'
import { computeDerivedCount, effectiveCount } from './plantings'
describe('computeDerivedCount', () => {
it('mirrors the server formula max(1, round(π·r²/spacing²))', () => {
expect(computeDerivedCount(10, 10)).toBe(3) // π·100/100 = 3.14 → 3
expect(computeDerivedCount(50, 10)).toBe(79) // π·2500/100 = 78.5 → 79
expect(computeDerivedCount(30, 15)).toBe(13) // π·900/225 = 12.57 → 13
})
it('floors at 1 for tiny / non-positive inputs', () => {
expect(computeDerivedCount(0.1, 10)).toBe(1)
expect(computeDerivedCount(0, 10)).toBe(1)
expect(computeDerivedCount(10, 0)).toBe(1)
})
it('caps like the server', () => {
expect(computeDerivedCount(10_000, 0.1)).toBe(1_000_000)
})
})
describe('effectiveCount', () => {
it('prefers the override, else the derived value', () => {
expect(effectiveCount({ count: 12, derivedCount: 79 })).toBe(12)
expect(effectiveCount({ count: null, derivedCount: 79 })).toBe(79)
})
})