@maplibre/maplibre-gl-style-spec
Version:
a specification for maplibre styles
84 lines (80 loc) • 2.33 kB
text/typescript
import {groupByLayout} from './group_by_layout';
import {describe, test, expect} from 'vitest';
import type {LayerSpecification} from './types.g';
describe('group by layout', () => {
test('group layers whose ref properties are identical', () => {
const a = {
id: 'parent',
type: 'line'
} as LayerSpecification;
const b = {
id: 'child',
type: 'line'
} as LayerSpecification;
expect(groupByLayout([a, b], {})).toEqual([[a, b]]);
expect(groupByLayout([a, b], {})[0][0]).toBe(a);
expect(groupByLayout([a, b], {})[0][1]).toBe(b);
});
test('group does not group unrelated layers', () => {
expect(
groupByLayout(
[
{
id: 'parent',
type: 'line'
} as LayerSpecification,
{
id: 'child',
type: 'fill'
} as LayerSpecification
],
{}
)
).toEqual([
[
{
id: 'parent',
type: 'line'
}
],
[
{
id: 'child',
type: 'fill'
}
]
]);
});
test('group works even for differing layout key orders', () => {
expect(
groupByLayout(
[
{
id: 'parent',
type: 'line',
layout: {a: 1, b: 2}
} as any as LayerSpecification,
{
id: 'child',
type: 'line',
layout: {b: 2, a: 1}
} as any as LayerSpecification
],
{}
)
).toEqual([
[
{
id: 'parent',
type: 'line',
layout: {a: 1, b: 2}
},
{
id: 'child',
type: 'line',
layout: {b: 2, a: 1}
}
]
]);
});
});