|
import { BoundingBox, Layout } from '../src/helpers' |
|
|
|
test('bounding box', () => { |
|
const bb = new BoundingBox(10, 20) |
|
expect(bb.addBoundingBox(100, 200)).toEqual( |
|
expect.objectContaining({ |
|
width: 110, |
|
height: 220 |
|
}) |
|
) |
|
expect(bb.removeBoundingBox(10, 120)).toEqual( |
|
expect.objectContaining({ |
|
x: 15, |
|
y: 120 |
|
}) |
|
) |
|
}) |
|
|
|
test('Layout class', () => { |
|
const data = { |
|
width: 10, |
|
height: 10, |
|
children: [ |
|
{ |
|
width: 10, |
|
height: 10, |
|
children: [{ width: 150, height: 10, children: [] }] |
|
}, |
|
{ width: 10, height: 10, children: [] }, |
|
{ width: 10, height: 10, children: [] }, |
|
{ width: 10, height: 10, children: [] }, |
|
{ width: 10, height: 20, children: [] } |
|
] |
|
} |
|
const bb = new BoundingBox(10, 10) |
|
const layout = new Layout(bb) |
|
const { boundingBox } = layout.layout(data) |
|
|
|
expect(data).toEqual(expect.objectContaining({ x: 120, y: 0 })) |
|
expect(data.children[0]).toEqual(expect.objectContaining({ x: 75, y: 20 })) |
|
expect(data.children[1]).toEqual(expect.objectContaining({ x: 97.5, y: 20 })) |
|
expect(data.children[2]).toEqual(expect.objectContaining({ x: 120, y: 20 })) |
|
expect(data.children[3]).toEqual(expect.objectContaining({ x: 142.5, y: 20 })) |
|
expect(data.children[4]).toEqual(expect.objectContaining({ x: 165, y: 20 })) |
|
expect(data.children[0].children[0]).toEqual( |
|
expect.objectContaining({ x: 5, y: 40 }) |
|
) |
|
|
|
expect(boundingBox).toEqual( |
|
expect.objectContaining({ left: 5, right: 175, top: 0, bottom: 50 }) |
|
) |
|
}) |
|
|
|
test('Big root, small child', () => { |
|
const t = { |
|
id: 0, |
|
width: 100, |
|
height: 50, |
|
children: [{ id: 1, width: 50, height: 50 }] |
|
} |
|
const l = new Layout(new BoundingBox(0, 0)) |
|
const { result, boundingBox } = l.layout(t) |
|
expect(result).toEqual(expect.objectContaining({ x: -25, y: 0 })) |
|
expect(result.children[0]).toEqual(expect.objectContaining({ x: 0, y: 50 })) |
|
expect(boundingBox).toEqual( |
|
expect.objectContaining({ left: -25, right: 75, top: 0, bottom: 100 }) |
|
) |
|
}) |
|
|
|
describe('Layout.getSize', () => { |
|
test('big root, small child', () => { |
|
const t = { |
|
id: 0, |
|
width: 100, |
|
height: 50, |
|
children: [{ id: 1, width: 50, height: 50 }] |
|
} |
|
const l = new Layout(new BoundingBox(0, 0)) |
|
l.layout(t) |
|
const bb = l.getSize(t) |
|
expect(bb).toEqual( |
|
expect.objectContaining({ left: -25, right: 75, top: 0, bottom: 100 }) |
|
) |
|
}) |
|
|
|
test('small root, big child', () => { |
|
const t = { |
|
id: 0, |
|
width: 50, |
|
height: 50, |
|
children: [{ id: 1, width: 100, height: 50 }] |
|
} |
|
const l = new Layout(new BoundingBox(20, 20)) |
|
l.layout(t) |
|
const bb = l.getSize(t) |
|
expect(bb).toEqual( |
|
expect.objectContaining({ left: 10, right: 110, top: 0, bottom: 120 }) |
|
) |
|
}) |
|
}) |
|
|