- 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
78 lines
2.3 KiB
TypeScript
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)
|
|
})
|
|
})
|