mirror of
https://github.com/streamwall/streamwall.git
synced 2026-01-26 15:12:47 -05:00
92 lines
1.8 KiB
JavaScript
92 lines
1.8 KiB
JavaScript
import { boxesFromViewContentMap } from './geometry'
|
|
|
|
function example([text]) {
|
|
return text
|
|
.replace(/\s/g, '')
|
|
.split('')
|
|
.map((c) => (c === '.' ? undefined : { url: c }))
|
|
}
|
|
|
|
const box1 = example`
|
|
ab
|
|
ab
|
|
`
|
|
|
|
const box2 = example`
|
|
aa
|
|
bb
|
|
`
|
|
|
|
const box3 = example`
|
|
aac
|
|
aaa
|
|
dae
|
|
`
|
|
|
|
const box4 = example`
|
|
...
|
|
.aa
|
|
.aa
|
|
`
|
|
|
|
const box5 = example`
|
|
..a
|
|
..a
|
|
.aa
|
|
`
|
|
|
|
describe.each([
|
|
[
|
|
2,
|
|
2,
|
|
box1,
|
|
[
|
|
{ content: { url: 'a' }, x: 0, y: 0, w: 1, h: 2, spaces: [0, 2] },
|
|
{ content: { url: 'b' }, x: 1, y: 0, w: 1, h: 2, spaces: [1, 3] },
|
|
],
|
|
],
|
|
[
|
|
2,
|
|
2,
|
|
box2,
|
|
[
|
|
{ content: { url: 'a' }, x: 0, y: 0, w: 2, h: 1, spaces: [0, 1] },
|
|
{ content: { url: 'b' }, x: 0, y: 1, w: 2, h: 1, spaces: [2, 3] },
|
|
],
|
|
],
|
|
[
|
|
3,
|
|
3,
|
|
box3,
|
|
[
|
|
{ content: { url: 'a' }, x: 0, y: 0, w: 2, h: 2, spaces: [0, 1, 3, 4] },
|
|
{ content: { url: 'c' }, x: 2, y: 0, w: 1, h: 1, spaces: [2] },
|
|
{ content: { url: 'a' }, x: 2, y: 1, w: 1, h: 1, spaces: [5] },
|
|
{ content: { url: 'd' }, x: 0, y: 2, w: 1, h: 1, spaces: [6] },
|
|
{ content: { url: 'a' }, x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
|
{ content: { url: 'e' }, x: 2, y: 2, w: 1, h: 1, spaces: [8] },
|
|
],
|
|
],
|
|
[
|
|
3,
|
|
3,
|
|
box4,
|
|
[{ content: { url: 'a' }, x: 1, y: 1, w: 2, h: 2, spaces: [4, 5, 7, 8] }],
|
|
],
|
|
[
|
|
3,
|
|
3,
|
|
box5,
|
|
[
|
|
{ content: { url: 'a' }, x: 2, y: 0, w: 1, h: 3, spaces: [2, 5, 8] },
|
|
{ content: { url: 'a' }, x: 1, y: 2, w: 1, h: 1, spaces: [7] },
|
|
],
|
|
],
|
|
])('boxesFromViewContentMap(%i, %i, %j)', (width, height, data, expected) => {
|
|
test(`returns expected ${expected.length} boxes`, () => {
|
|
const stateURLMap = new Map(data.map((v, idx) => [idx, v]))
|
|
const result = boxesFromViewContentMap(width, height, stateURLMap)
|
|
expect(result).toStrictEqual(expected)
|
|
})
|
|
})
|