openpencil/tests/engine/layout/auto-layout/layout-align-self/extended-values.test.ts
Danila Poyarkov aad26b535e test: move prefixed splits into domain folders
- 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
2026-05-06 14:27:21 +03:00

78 lines
2.3 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('layoutAlignSelf extended values', () => {
test('layoutAlignSelf CENTER positions child at cross-axis center', () => {
const graph = new SceneGraph()
const frame = autoFrame(graph, pageId(graph), {
width: 400,
height: 200,
counterAxisAlign: 'MIN'
})
rect(graph, frame.id, 50, 50, { layoutAlignSelf: 'CENTER' as const })
rect(graph, frame.id, 50, 50)
computeLayout(graph, frame.id)
const children = graph.getChildren(frame.id)
expect(children[0].y).toBe(75)
expect(children[1].y).toBe(0)
})
test('layoutAlignSelf MAX positions child at cross-axis end', () => {
const graph = new SceneGraph()
const frame = autoFrame(graph, pageId(graph), {
width: 400,
height: 200,
counterAxisAlign: 'MIN'
})
rect(graph, frame.id, 50, 50, { layoutAlignSelf: 'MAX' as const })
rect(graph, frame.id, 50, 50)
computeLayout(graph, frame.id)
const children = graph.getChildren(frame.id)
expect(children[0].y).toBe(150)
expect(children[1].y).toBe(0)
})
test('layoutAlignSelf MIN overrides parent STRETCH', () => {
const graph = new SceneGraph()
const frame = autoFrame(graph, pageId(graph), {
width: 400,
height: 200,
counterAxisAlign: 'STRETCH'
})
rect(graph, frame.id, 50, 50, { layoutAlignSelf: 'MIN' as const })
rect(graph, frame.id, 50, 50)
computeLayout(graph, frame.id)
const children = graph.getChildren(frame.id)
expect(children[0].y).toBe(0)
expect(children[0].height).toBe(50)
expect(children[1].height).toBe(200)
})
test('layoutAlignSelf in vertical layout', () => {
const graph = new SceneGraph()
const frame = autoFrame(graph, pageId(graph), {
layoutMode: 'VERTICAL',
width: 300,
height: 400,
counterAxisAlign: 'MIN'
})
rect(graph, frame.id, 50, 50, { layoutAlignSelf: 'CENTER' as const })
rect(graph, frame.id, 50, 50, { layoutAlignSelf: 'MAX' as const })
computeLayout(graph, frame.id)
const children = graph.getChildren(frame.id)
expect(children[0].x).toBe(125)
expect(children[1].x).toBe(250)
})
})