UNPKG

3.07 kBPlain TextView Raw
1import WorkerTile from '../source/worker_tile';
2import Wrapper, {Feature} from '../source/geojson_wrapper';
3import {OverscaledTileID} from '../source/tile_id';
4import StyleLayerIndex from '../style/style_layer_index';
5import {WorkerTileParameters} from './worker_source';
6import Actor from '../util/actor';
7import {VectorTile} from '@mapbox/vector-tile';
8
9function createWorkerTile() {
10 return new WorkerTile({
11 uid: '',
12 zoom: 0,
13 maxZoom: 20,
14 tileSize: 512,
15 source: 'source',
16 tileID: new OverscaledTileID(1, 0, 1, 1, 1),
17 overscaling: 1
18 } as any as WorkerTileParameters);
19}
20
21function createWrapper() {
22 return new Wrapper([{
23 type: 1,
24 geometry: [0, 0],
25 tags: {}
26 } as any as Feature]);
27}
28
29describe('worker tile', () => {
30 test('WorkerTile#parse', done => {
31 const layerIndex = new StyleLayerIndex([{
32 id: 'test',
33 source: 'source',
34 type: 'circle'
35 }]);
36
37 const tile = createWorkerTile();
38 tile.parse(createWrapper(), layerIndex, [], {} as Actor, (err, result) => {
39 expect(err).toBeFalsy();
40 expect(result.buckets[0]).toBeTruthy();
41 done();
42 });
43 });
44
45 test('WorkerTile#parse skips hidden layers', done => {
46 const layerIndex = new StyleLayerIndex([{
47 id: 'test-hidden',
48 source: 'source',
49 type: 'fill',
50 layout: {visibility: 'none'}
51 }]);
52
53 const tile = createWorkerTile();
54 tile.parse(createWrapper(), layerIndex, [], {} as Actor, (err, result) => {
55 expect(err).toBeFalsy();
56 expect(result.buckets).toHaveLength(0);
57 done();
58 });
59 });
60
61 test('WorkerTile#parse skips layers without a corresponding source layer', done => {
62 const layerIndex = new StyleLayerIndex([{
63 id: 'test',
64 source: 'source',
65 'source-layer': 'nonesuch',
66 type: 'fill'
67 }]);
68
69 const tile = createWorkerTile();
70 tile.parse({layers: {}}, layerIndex, [], {} as Actor, (err, result) => {
71 expect(err).toBeFalsy();
72 expect(result.buckets).toHaveLength(0);
73 done();
74 });
75 });
76
77 test('WorkerTile#parse warns once when encountering a v1 vector tile layer', done => {
78 const layerIndex = new StyleLayerIndex([{
79 id: 'test',
80 source: 'source',
81 'source-layer': 'test',
82 type: 'fill'
83 }]);
84
85 const data = {
86 layers: {
87 test: {
88 version: 1
89 }
90 }
91 } as any as VectorTile;
92
93 const spy = jest.spyOn(console, 'warn').mockImplementation(() => {});
94
95 const tile = createWorkerTile();
96 tile.parse(data, layerIndex, [], {} as Actor, (err) => {
97 expect(err).toBeFalsy();
98 expect(spy.mock.calls[0][0]).toMatch(/does not use vector tile spec v2/);
99 done();
100 });
101 });
102});