import assert from 'node:assert/strict'; import fs from 'node:fs'; import vm from 'node:vm'; const source = fs.readFileSync(new URL('../app.js', import.meta.url), 'utf8'); const checks = ` dashboard = { vehicles: [ { vin: 'VIN-GD-1', plateNumber: '粤A00001', online: true, dailyMileageKm: 10, locationAvailable: true, longitude: 113.2, latitude: 23.1 }, { vin: 'VIN-GD-2', plateNumber: '粤B00002', online: false, dailyMileageKm: 5, locationAvailable: false }, { vin: 'VIN-ZJ-1', plateNumber: '浙F00003', online: true, dailyMileageKm: 8, locationAvailable: true, longitude: 120.7, latitude: 30.7 }, { vin: 'VIN-X-1', plateNumber: '观光车001', online: false, dailyMileageKm: 0, locationAvailable: false } ] }; const areaNode = { groupByPosition(points) { return [ { subFeatureIndex: 0, subFeature: { properties: { adcode: '440000', name: '广东省', center: [113.2, 23.1] } }, points: points.filter(point => point.vin === 'VIN-GD-1') }, { subFeatureIndex: 1, subFeature: { properties: { adcode: '330000', name: '浙江省', center: [120.2, 30.3] } }, points: points.filter(point => point.vin === 'VIN-ZJ-1') } ]; } }; vehicleProvinceSummary = aggregateVehicleProvinces(areaNode); const summary = buildVehicleProvinceNodes(); assert.equal(summary.nodes.length, 2); assert.equal(summary.unassigned, 2); const guangdong = summary.nodes.find(node => node.nameZh === '广东'); assert.equal(guangdong.count, 1); assert.equal(guangdong.online, 1); assert.equal(guangdong.dist, 10); map = { getZoom: () => 4.8 }; assert.equal(vehicleNodes().length, 2); assert.ok(vehicleNodes().every(node => node.kind === 'vehicleProvince')); map = { getZoom: () => 8 }; assert.ok(vehicleNodes().every(node => node.kind === 'vehicleCluster')); assert.equal(vehicleNodes().reduce((sum, node) => sum + node.count, 0), 2); `; const sandbox = { assert, console, document: { addEventListener() {}, querySelector() {}, createElement() { return {}; }, head: { appendChild() {} } }, window: {}, setInterval() {}, clearInterval() {} }; vm.runInNewContext(`${source}\n${checks}`, sandbox, { filename: 'app.js' }); console.log('vehicle province aggregation tests: ok');