forked from MapComplete/MapComplete
		
	
		
			
				
	
	
		
			84 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { FeatureCollection, Point } from "geojson"
 | 
						|
import { describe, it } from "vitest"
 | 
						|
import StaticFeatureSource from "../../../src/Logic/FeatureSource/Sources/StaticFeatureSource"
 | 
						|
import {
 | 
						|
    ClusterGrouping,
 | 
						|
    ClusteringFeatureSource
 | 
						|
} from "../../../src/Logic/FeatureSource/TiledFeatureSource/ClusteringFeatureSource"
 | 
						|
import { UIEventSource } from "../../../src/Logic/UIEventSource"
 | 
						|
import { expect } from "chai"
 | 
						|
 | 
						|
const points: FeatureCollection<Point> = {
 | 
						|
    "type": "FeatureCollection",
 | 
						|
    "features": [
 | 
						|
        {
 | 
						|
            "type": "Feature",
 | 
						|
            "properties": {name: "a"},
 | 
						|
            "geometry": {
 | 
						|
                "coordinates": [
 | 
						|
                    9.759318139161195,
 | 
						|
                    55.56552169756637
 | 
						|
                ],
 | 
						|
                "type": "Point"
 | 
						|
            }
 | 
						|
        },
 | 
						|
        {
 | 
						|
            "type": "Feature",
 | 
						|
            "properties": {name: "b"},
 | 
						|
            "geometry": {
 | 
						|
                "coordinates": [
 | 
						|
                    9.759768615515327,
 | 
						|
                    55.56569930560951
 | 
						|
                ],
 | 
						|
                "type": "Point"
 | 
						|
            }
 | 
						|
        },
 | 
						|
        {
 | 
						|
            "type": "Feature",
 | 
						|
            "properties": {name: "c"},
 | 
						|
            "geometry": {
 | 
						|
                "coordinates": [
 | 
						|
                    9.75879327221594,
 | 
						|
                    55.56569229478089
 | 
						|
                ],
 | 
						|
                "type": "Point"
 | 
						|
            }
 | 
						|
        },
 | 
						|
        {
 | 
						|
            "type": "Feature",
 | 
						|
            "properties": {name: "d"},
 | 
						|
            "geometry": {
 | 
						|
                "coordinates": [
 | 
						|
                    9.759380131319915,
 | 
						|
                    55.56507066300628
 | 
						|
                ],
 | 
						|
                "type": "Point"
 | 
						|
            }
 | 
						|
        }
 | 
						|
    ]
 | 
						|
}
 | 
						|
 | 
						|
describe("ClusteringFeatureSource", () => {
 | 
						|
    it("smallTest", () => {
 | 
						|
        const source = new StaticFeatureSource(points.features)
 | 
						|
        const zoom = new UIEventSource(19)
 | 
						|
        // On zoomlevel 19, all points are in a different tile
 | 
						|
        const clusteringSource = new ClusteringFeatureSource(source, zoom, "test", {
 | 
						|
            cutoff: 2,
 | 
						|
            dontClusterAboveZoom: 100
 | 
						|
        })
 | 
						|
        const allClusters = ClusterGrouping.singleton.features
 | 
						|
        expect(allClusters.data.length).to.eq(0)
 | 
						|
        expect(clusteringSource.features.data.length).to.eq(4)
 | 
						|
 | 
						|
        zoom.set(13)
 | 
						|
 | 
						|
        expect(allClusters.data.length).to.eq(1)
 | 
						|
        expect(allClusters.data[0].properties["total_metric"]).to.eq("4")
 | 
						|
        expect(clusteringSource.features.data.length).to.eq(0)
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    })
 | 
						|
})
 |