@@ -457,3 +457,60 @@ test('MVTLayer#triangulation', async t => {
457
457
458
458
t . end ( ) ;
459
459
} ) ;
460
+
461
+ for ( const tileset of [ 'mvt-tiles' , 'mvt-with-hole' ] ) {
462
+ test ( `MVTLayer#data.length ${ tileset } ` , async t => {
463
+ const viewport = new WebMercatorViewport ( {
464
+ longitude : - 100 ,
465
+ latitude : 40 ,
466
+ zoom : 3 ,
467
+ pitch : 0 ,
468
+ bearing : 0
469
+ } ) ;
470
+
471
+ let binaryDataLength ;
472
+ let geoJsonDataLength ;
473
+ let requests = 0 ;
474
+ const onAfterUpdate = ( { layer} ) => {
475
+ if ( ! layer . isLoaded ) {
476
+ return ;
477
+ }
478
+ const geoJsonLayer = layer . internalState . subLayers [ 0 ] ;
479
+ const polygons = geoJsonLayer . state . layerProps . polygons ;
480
+ if ( layer . props . binary ) {
481
+ binaryDataLength = polygons . data . length ;
482
+ requests ++ ;
483
+ } else {
484
+ geoJsonDataLength = polygons . data . length ;
485
+ requests ++ ;
486
+ }
487
+
488
+ if ( requests === 2 ) {
489
+ t . equals ( geoJsonDataLength , binaryDataLength , 'should have equal length' ) ;
490
+ }
491
+ } ;
492
+
493
+ // To avoid caching use different URLs
494
+ const url1 = [ `./test/data/${ tileset } /{z}/{x}/{y}.mvt?test1` ] ;
495
+ const url2 = [ `./test/data/${ tileset } /{z}/{x}/{y}.mvt?test2` ] ;
496
+ const props = {
497
+ onTileError : error => {
498
+ if ( ! ( error . message && error . message . includes ( '404' ) ) ) {
499
+ throw error ;
500
+ }
501
+ } ,
502
+ loadOptions : {
503
+ mvt : {
504
+ workerUrl : null
505
+ }
506
+ }
507
+ } ;
508
+ const testCases = [
509
+ { props : { binary : false , data : url1 , ...props } , onAfterUpdate} ,
510
+ { props : { binary : true , data : url2 , ...props } , onAfterUpdate}
511
+ ] ;
512
+
513
+ await testLayerAsync ( { Layer : MVTLayer , viewport, testCases, onError : t . notOk } ) ;
514
+ t . end ( ) ;
515
+ } ) ;
516
+ }
0 commit comments