UNPKG

maplibre-gl

Version:

BSD licensed community fork of mapbox-gl, a WebGL interactive maps library

105 lines (92 loc) 3.29 kB
import TerrainSourceCache from './terrain_source_cache'; import Style from '../style/style'; import {RequestManager} from '../util/request_manager'; import Dispatcher from '../util/dispatcher'; import {fakeServer, FakeServer} from 'nise'; import Transform from '../geo/transform'; import {Evented} from '../util/evented'; import Painter from '../render/painter'; import Context from '../gl/context'; import gl from 'gl'; import RasterDEMTileSource from './raster_dem_tile_source'; import {OverscaledTileID} from './tile_id'; import Tile from './tile'; import DEMData from '../data/dem_data'; const context = new Context(gl(10, 10)); const transform = new Transform(); class StubMap extends Evented { transform: Transform; painter: Painter; _requestManager: RequestManager; constructor() { super(); this.transform = transform; this._requestManager = { transformRequest: (url) => { return {url}; } } as any as RequestManager; } } function createSource(options, transformCallback?) { const source = new RasterDEMTileSource('id', options, {send() {}} as any as Dispatcher, null); source.onAdd({ transform, _getMapId: () => 1, _requestManager: new RequestManager(transformCallback), getPixelRatio() { return 1; } } as any); source.on('error', (e) => { throw e.error; }); return source; } describe('TerrainSourceCache', () => { let server: FakeServer; let style: Style; let tsc: TerrainSourceCache; beforeAll(done => { global.fetch = null; server = fakeServer.create(); server.respondWith('/source.json', JSON.stringify({ minzoom: 5, maxzoom: 12, attribution: 'MapLibre', tiles: ['http://example.com/{z}/{x}/{y}.pngraw'], bounds: [-47, -7, -45, -5] })); const map = new StubMap(); style = new Style(map as any); style.map.painter = {style, context} as any; style.on('style.load', () => { const source = createSource({url: '/source.json'}); server.respond(); style.addSource('terrain', source as any); tsc = new TerrainSourceCache(style.sourceCaches.terrain); done(); }); style.loadJSON({ 'version': 8, 'sources': {}, 'layers': [] }); }); afterAll(() => { server.restore(); }); test('#constructor', () => { expect(tsc.sourceCache.usedForTerrain).toBeTruthy(); expect(tsc.sourceCache.tileSize).toBe(tsc.tileSize * 2 ** tsc.deltaZoom); }); test('#getSourceTile', () => { const tileID = new OverscaledTileID(5, 0, 5, 17, 11); const tile = new Tile(tileID, 256); tile.dem = {} as DEMData; tsc.sourceCache._tiles[tileID.key] = tile; expect(tsc.deltaZoom).toBe(1); expect(tsc.getSourceTile(tileID)).toBeFalsy(); expect(tsc.getSourceTile(tileID.children(12)[0])).toBeTruthy(); expect(tsc.getSourceTile(tileID.children(12)[0].children(12)[0])).toBeFalsy(); expect(tsc.getSourceTile(tileID.children(12)[0].children(12)[0], true)).toBeTruthy(); }); });