- Move newly split tests under explicit domain subfolders - Update nested helper imports after the moves - Add a lint guard against repeating existing sibling domains as filename prefixes
73 lines
2 KiB
TypeScript
73 lines
2 KiB
TypeScript
import { describe, expect, test } from 'bun:test'
|
|
|
|
import { computeLayout, SceneGraph } from '@open-pencil/core'
|
|
|
|
import { autoFrame, pageId, rect } from '#tests/helpers/layout'
|
|
|
|
describe('wrap layout', () => {
|
|
test('wraps children in horizontal layout', () => {
|
|
const graph = new SceneGraph()
|
|
const frame = autoFrame(graph, pageId(graph), {
|
|
width: 200,
|
|
height: 300,
|
|
layoutWrap: 'WRAP'
|
|
})
|
|
rect(graph, frame.id, 80, 40)
|
|
rect(graph, frame.id, 80, 40)
|
|
rect(graph, frame.id, 80, 40)
|
|
|
|
computeLayout(graph, frame.id)
|
|
|
|
const children = graph.getChildren(frame.id)
|
|
// First two fit on first row (80 + 80 = 160 <= 200)
|
|
expect(children[0].x).toBe(0)
|
|
expect(children[0].y).toBe(0)
|
|
expect(children[1].x).toBe(80)
|
|
expect(children[1].y).toBe(0)
|
|
// Third wraps to second row
|
|
expect(children[2].x).toBe(0)
|
|
expect(children[2].y).toBe(40)
|
|
})
|
|
|
|
test('counterAxisSpacing adds gap between wrapped rows', () => {
|
|
const graph = new SceneGraph()
|
|
const frame = autoFrame(graph, pageId(graph), {
|
|
width: 200,
|
|
height: 300,
|
|
layoutWrap: 'WRAP',
|
|
counterAxisSpacing: 10
|
|
})
|
|
rect(graph, frame.id, 120, 40)
|
|
rect(graph, frame.id, 120, 40)
|
|
|
|
computeLayout(graph, frame.id)
|
|
|
|
const children = graph.getChildren(frame.id)
|
|
expect(children[0].y).toBe(0)
|
|
expect(children[1].y).toBe(50)
|
|
})
|
|
|
|
test('itemSpacing with wrap', () => {
|
|
const graph = new SceneGraph()
|
|
const frame = autoFrame(graph, pageId(graph), {
|
|
width: 200,
|
|
height: 300,
|
|
layoutWrap: 'WRAP',
|
|
itemSpacing: 10
|
|
})
|
|
// 90 + 10 + 90 = 190, fits in 200
|
|
rect(graph, frame.id, 90, 40)
|
|
rect(graph, frame.id, 90, 40)
|
|
// 90 wraps to next row
|
|
rect(graph, frame.id, 90, 40)
|
|
|
|
computeLayout(graph, frame.id)
|
|
|
|
const children = graph.getChildren(frame.id)
|
|
expect(children[0].x).toBe(0)
|
|
expect(children[1].x).toBe(100)
|
|
expect(children[2].x).toBe(0)
|
|
expect(children[2].y).toBe(40)
|
|
})
|
|
})
|