@itwin/map-layers-formats 4.0.0-dev.8 → 4.0.0-dev.81
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rush/temp/operation/build/all.log +3 -0
- package/.rush/temp/operation/build/state.json +3 -0
- package/.rush/temp/operation/cover/all.log +98 -0
- package/.rush/temp/operation/cover/state.json +1 -1
- package/.rush/temp/operation/docs/all.log +30 -0
- package/.rush/temp/operation/docs/state.json +1 -1
- package/.rush/temp/{package-deps_build_ci.json → package-deps_build.json} +11 -11
- package/.rush/temp/package-deps_cover.json +10 -10
- package/.rush/temp/package-deps_docs.json +10 -10
- package/.rush/temp/shrinkwrap-deps.json +190 -44
- package/CHANGELOG.json +57 -0
- package/CHANGELOG.md +44 -1
- package/config/rush-project.json +1 -2
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.d.ts +8 -8
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.d.ts +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js +132 -134
- package/lib/cjs/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.d.ts +14 -14
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js +200 -202
- package/lib/cjs/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.d.ts +44 -44
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js +421 -422
- package/lib/cjs/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts +92 -92
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureQuery.js +82 -82
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.d.ts +17 -17
- package/lib/cjs/ArcGisFeature/ArcGisFeatureReader.js +33 -33
- package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.d.ts +32 -32
- package/lib/cjs/ArcGisFeature/ArcGisFeatureRenderer.js +142 -142
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.d.ts +16 -16
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js +42 -43
- package/lib/cjs/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +85 -85
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js +189 -192
- package/lib/cjs/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.d.ts +1063 -1063
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.d.ts.map +1 -1
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js +2267 -2270
- package/lib/cjs/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/cjs/map-layers-formats.d.ts +8 -8
- package/lib/cjs/map-layers-formats.js +28 -24
- package/lib/cjs/map-layers-formats.js.map +1 -1
- package/lib/cjs/mapLayersFormats.d.ts +10 -10
- package/lib/cjs/mapLayersFormats.js +28 -28
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +34 -34
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureJSON.test.js +161 -161
- package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeaturePBF.test.js +167 -167
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js +679 -680
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureQuery.test.js +103 -103
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +214 -214
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js +94 -94
- package/lib/cjs/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +1 -1
- package/lib/cjs/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +59 -59
- package/lib/cjs/test/ArcGisFeature/Mocks.d.ts +6 -6
- package/lib/cjs/test/ArcGisFeature/Mocks.js +18 -18
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts +55 -55
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.d.ts.map +1 -1
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js +419 -419
- package/lib/cjs/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +1042 -1042
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +1 -1
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js +426 -426
- package/lib/cjs/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
- package/lib/cjs/test/coverage/.nyc_output/cd866071-e986-4027-89f6-9a70b6e25ed3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/4c93adb3-7e95-4a63-9814-a25d79ab4680.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/cd866071-e986-4027-89f6-9a70b6e25ed3.json +1 -0
- package/lib/cjs/test/coverage/.nyc_output/processinfo/index.json +1 -1
- package/lib/cjs/test/coverage/cobertura-coverage.xml +72 -72
- package/lib/cjs/test/coverage/lcov-report/index.html +5 -5
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureFormat.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureJSON.ts.html +10 -10
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeaturePBF.ts.html +7 -7
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureProvider.ts.html +10 -10
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureQuery.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureReader.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureRenderer.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisFeatureResponse.ts.html +4 -4
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/ArcGisSymbologyRenderer.ts.html +8 -8
- package/lib/cjs/test/coverage/lcov-report/src/ArcGisFeature/index.html +13 -13
- package/lib/cjs/test/coverage/lcov-report/src/index.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/map-layers-formats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov-report/src/mapLayersFormats.ts.html +1 -1
- package/lib/cjs/test/coverage/lcov.info +355 -531
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.d.ts +8 -8
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js +11 -10
- package/lib/esm/ArcGisFeature/ArcGisFeatureFormat.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.d.ts +14 -14
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js +128 -130
- package/lib/esm/ArcGisFeature/ArcGisFeatureJSON.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.d.ts +14 -14
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js +196 -198
- package/lib/esm/ArcGisFeature/ArcGisFeaturePBF.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.d.ts +44 -44
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js +418 -418
- package/lib/esm/ArcGisFeature/ArcGisFeatureProvider.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts +92 -92
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureQuery.js +78 -78
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.d.ts +17 -17
- package/lib/esm/ArcGisFeature/ArcGisFeatureReader.js +29 -29
- package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.d.ts +32 -32
- package/lib/esm/ArcGisFeature/ArcGisFeatureRenderer.js +138 -138
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.d.ts +16 -16
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js +38 -39
- package/lib/esm/ArcGisFeature/ArcGisFeatureResponse.js.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts +85 -85
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js +183 -185
- package/lib/esm/ArcGisFeature/ArcGisSymbologyRenderer.js.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.d.ts +1063 -1063
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.d.ts.map +1 -1
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js +2264 -2267
- package/lib/esm/ArcGisFeature/esriPBuffer.gen.js.map +1 -1
- package/lib/esm/map-layers-formats.d.ts +8 -8
- package/lib/esm/map-layers-formats.js +12 -12
- package/lib/esm/mapLayersFormats.d.ts +10 -10
- package/lib/esm/mapLayersFormats.js +24 -24
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureFeatureFormats.test.js +32 -32
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureJSON.test.js +159 -159
- package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeaturePBF.test.js +165 -165
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js +677 -678
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureProvider.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureQuery.test.js +101 -101
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureRenderer.test.js +212 -212
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js +92 -92
- package/lib/esm/test/ArcGisFeature/ArcGisFeatureResponse.test.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.d.ts +1 -1
- package/lib/esm/test/ArcGisFeature/ArcGisSymbologyRenderer.test.js +57 -57
- package/lib/esm/test/ArcGisFeature/Mocks.d.ts +6 -6
- package/lib/esm/test/ArcGisFeature/Mocks.js +15 -15
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts +55 -55
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.d.ts.map +1 -1
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.js +416 -415
- package/lib/esm/test/ArcGisFeature/NewYorkDataset.js.map +1 -1
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts +1042 -1042
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.d.ts.map +1 -1
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js +423 -422
- package/lib/esm/test/ArcGisFeature/PhillyLandmarksDataset.js.map +1 -1
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/test/junit_results.xml +44 -44
- package/map-layers-formats.build.log +2 -2
- package/package.json +17 -17
- package/src/ArcGisFeature/esriPBuffer.gen.ts +1 -4
- package/src/test/ArcGisFeature/ArcGisFeatureProvider.test.ts +21 -21
- package/src/test/ArcGisFeature/NewYorkDataset.ts +187 -187
- package/src/test/ArcGisFeature/PhillyLandmarksDataset.ts +4 -4
- package/tsconfig.json +1 -2
- package/.rush/temp/operation/build_ci/state.json +0 -3
- package/lib/cjs/test/coverage/.nyc_output/bb9e12be-ea3c-4cee-99d0-c7a34bd2c47a.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/5901bdfe-760d-4ca3-9674-876be7ed11b1.json +0 -1
- package/lib/cjs/test/coverage/.nyc_output/processinfo/bb9e12be-ea3c-4cee-99d0-c7a34bd2c47a.json +0 -1
- /package/lib/cjs/test/coverage/.nyc_output/{5901bdfe-760d-4ca3-9674-876be7ed11b1.json → 4c93adb3-7e95-4a63-9814-a25d79ab4680.json} +0 -0
|
@@ -1,213 +1,213 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { expect } from "chai";
|
|
6
|
-
import * as sinon from "sinon";
|
|
7
|
-
import { fakeContext } from "./Mocks";
|
|
8
|
-
import { ArcGisSymbologyRenderer } from "../../ArcGisFeature/ArcGisSymbologyRenderer";
|
|
9
|
-
import { PhillyLandmarksDataset } from "./PhillyLandmarksDataset";
|
|
10
|
-
import { ArcGisFeatureRenderer } from "../../ArcGisFeature/ArcGisFeatureRenderer";
|
|
11
|
-
import { Point3d, Transform } from "@itwin/core-geometry";
|
|
12
|
-
describe("ArcGisFeatureRenderer", () => {
|
|
13
|
-
const sandbox = sinon.createSandbox();
|
|
14
|
-
let beginPathSpy;
|
|
15
|
-
let moveToSpy;
|
|
16
|
-
let lineToSpy;
|
|
17
|
-
let strokeSpy;
|
|
18
|
-
let fillSpy;
|
|
19
|
-
let closePathSpy;
|
|
20
|
-
beforeEach(async () => {
|
|
21
|
-
beginPathSpy = sandbox.spy(fakeContext, "beginPath");
|
|
22
|
-
moveToSpy = sandbox.spy(fakeContext, "moveTo");
|
|
23
|
-
lineToSpy = sandbox.spy(fakeContext, "lineTo");
|
|
24
|
-
strokeSpy = sandbox.spy(fakeContext, "stroke");
|
|
25
|
-
fillSpy = sandbox.spy(fakeContext, "fill");
|
|
26
|
-
closePathSpy = sandbox.spy(fakeContext, "closePath");
|
|
27
|
-
});
|
|
28
|
-
afterEach(async () => {
|
|
29
|
-
sandbox.restore();
|
|
30
|
-
});
|
|
31
|
-
it("should render simple path, stride = 2", async () => {
|
|
32
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
33
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
34
|
-
const coords = [1, 2, 3, 4];
|
|
35
|
-
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
36
|
-
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
37
|
-
renderer.renderPath([2], coords, false, 2, true);
|
|
38
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
39
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
40
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
41
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
42
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
43
|
-
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
44
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
45
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
46
|
-
expect(strokeSpy.calledOnce).to.be.true;
|
|
47
|
-
expect(fillSpy.called).to.be.false;
|
|
48
|
-
expect(closePathSpy.called).to.be.false;
|
|
49
|
-
expect(applyFillStyleSpy.calledOnce).to.be.false;
|
|
50
|
-
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
51
|
-
});
|
|
52
|
-
it("should render simple filled path", async () => {
|
|
53
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
54
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
55
|
-
const coords = [1, 2, 3, 4];
|
|
56
|
-
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
57
|
-
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
58
|
-
renderer.renderPath([2], coords, true, 2, true);
|
|
59
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
60
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
61
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
62
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
63
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
64
|
-
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
65
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
66
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
67
|
-
expect(strokeSpy.calledOnce).to.be.true;
|
|
68
|
-
expect(fillSpy.calledOnce).to.be.true;
|
|
69
|
-
expect(closePathSpy.calledOnce).to.be.true;
|
|
70
|
-
expect(applyFillStyleSpy.calledOnce).to.be.true;
|
|
71
|
-
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
72
|
-
});
|
|
73
|
-
it("should render simple Path, stride = 3", async () => {
|
|
74
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
75
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
76
|
-
const coords = [1, 2, 3, 4, 5, 6];
|
|
77
|
-
renderer.renderPath([2], coords, false, 3, true);
|
|
78
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
79
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
80
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
81
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
82
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
83
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[3]);
|
|
84
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[4]);
|
|
85
|
-
expect(strokeSpy.calledOnce).to.be.true;
|
|
86
|
-
expect(fillSpy.called).to.be.false;
|
|
87
|
-
expect(closePathSpy.called).to.be.false;
|
|
88
|
-
});
|
|
89
|
-
it("should render multiple Paths, stride = 2", async () => {
|
|
90
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
91
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
92
|
-
const coords = [1, 2, 3, 4];
|
|
93
|
-
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
94
|
-
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
95
|
-
renderer.renderPath([2], coords, false, 2, true);
|
|
96
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
97
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
98
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
99
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
100
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
101
|
-
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
102
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
103
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
104
|
-
expect(strokeSpy.calledOnce).to.be.true;
|
|
105
|
-
expect(fillSpy.called).to.be.false;
|
|
106
|
-
expect(closePathSpy.called).to.be.false;
|
|
107
|
-
expect(applyFillStyleSpy.calledOnce).to.be.false;
|
|
108
|
-
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
109
|
-
});
|
|
110
|
-
it("should not render invalid with stride value", async () => {
|
|
111
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
112
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
113
|
-
const coords = [1, 2, 3, 4];
|
|
114
|
-
renderer.renderPath([2], coords, false, 1, true);
|
|
115
|
-
renderer.renderPath([2], coords, false, 4, true);
|
|
116
|
-
renderer.renderPoint([2], coords, 1, true);
|
|
117
|
-
renderer.renderPoint([2], coords, 4, true);
|
|
118
|
-
expect(lineToSpy.calledOnce).to.be.false;
|
|
119
|
-
expect(strokeSpy.calledOnce).to.be.false;
|
|
120
|
-
expect(fillSpy.called).to.be.false;
|
|
121
|
-
expect(closePathSpy.called).to.be.false;
|
|
122
|
-
});
|
|
123
|
-
it("should render Path and apply transform, relativeCoords OFF", async () => {
|
|
124
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
125
|
-
const fakeOffset = 10;
|
|
126
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
127
|
-
const coords = [1, 2, 3, 4];
|
|
128
|
-
renderer.renderPath([2], coords, false, 2, false);
|
|
129
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
130
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
131
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0] + fakeOffset);
|
|
132
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1] + fakeOffset);
|
|
133
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
134
|
-
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
135
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[2] + fakeOffset);
|
|
136
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[3] + fakeOffset);
|
|
137
|
-
});
|
|
138
|
-
it("should render single Point, no transform, relativeCoords OFF", async () => {
|
|
139
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
140
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
141
|
-
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
142
|
-
const coords = [1, 2];
|
|
143
|
-
renderer.renderPoint([], coords, 2, false);
|
|
144
|
-
expect(drawPointStub.calledOnce).to.be.true;
|
|
145
|
-
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);
|
|
146
|
-
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);
|
|
147
|
-
});
|
|
148
|
-
it("should render single Point and apply transform, relativeCoords OFF", async () => {
|
|
149
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
150
|
-
const fakeOffset = 10;
|
|
151
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
152
|
-
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
153
|
-
const coords = [1, 2];
|
|
154
|
-
renderer.renderPoint([], coords, 2, false);
|
|
155
|
-
expect(drawPointStub.calledOnce).to.be.true;
|
|
156
|
-
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
157
|
-
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
158
|
-
});
|
|
159
|
-
it("should render multi Point, transform, relativeCoords OFF", async () => {
|
|
160
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
161
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
162
|
-
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
163
|
-
const coords = [1, 2, 3, 4];
|
|
164
|
-
renderer.renderPoint([2], coords, 2, false);
|
|
165
|
-
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
166
|
-
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);
|
|
167
|
-
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);
|
|
168
|
-
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]);
|
|
169
|
-
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]);
|
|
170
|
-
});
|
|
171
|
-
it("should render multi Point and apply transform, relativeCoords OFF", async () => {
|
|
172
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
173
|
-
const fakeOffset = 10;
|
|
174
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
175
|
-
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
176
|
-
const coords = [1, 2, 3, 4];
|
|
177
|
-
renderer.renderPoint([2], coords, 2, false);
|
|
178
|
-
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
179
|
-
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
180
|
-
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
181
|
-
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2] + fakeOffset);
|
|
182
|
-
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3] + fakeOffset);
|
|
183
|
-
});
|
|
184
|
-
it("should render multi Point and apply transform, relativeCoords ON", async () => {
|
|
185
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
186
|
-
const fakeOffset = 10;
|
|
187
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
188
|
-
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
189
|
-
const coords = [1, 2, 3, 4];
|
|
190
|
-
renderer.renderPoint([2], coords, 2, true);
|
|
191
|
-
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
192
|
-
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
193
|
-
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
194
|
-
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[0] + coords[2] + fakeOffset);
|
|
195
|
-
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[1] + coords[3] + fakeOffset);
|
|
196
|
-
});
|
|
197
|
-
it("should render and apply transform, relativeCoords ON", async () => {
|
|
198
|
-
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
199
|
-
const fakeOffset = 10;
|
|
200
|
-
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
201
|
-
const coords = [1, 2, 3, 4];
|
|
202
|
-
renderer.renderPath([2], coords, false, 2, true);
|
|
203
|
-
expect(beginPathSpy.calledOnce).to.be.true;
|
|
204
|
-
expect(moveToSpy.calledOnce).to.be.true;
|
|
205
|
-
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0] + fakeOffset);
|
|
206
|
-
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1] + fakeOffset);
|
|
207
|
-
expect(lineToSpy.calledOnce).to.be.true;
|
|
208
|
-
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
209
|
-
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2] + fakeOffset);
|
|
210
|
-
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3] + fakeOffset);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { expect } from "chai";
|
|
6
|
+
import * as sinon from "sinon";
|
|
7
|
+
import { fakeContext } from "./Mocks";
|
|
8
|
+
import { ArcGisSymbologyRenderer } from "../../ArcGisFeature/ArcGisSymbologyRenderer";
|
|
9
|
+
import { PhillyLandmarksDataset } from "./PhillyLandmarksDataset";
|
|
10
|
+
import { ArcGisFeatureRenderer } from "../../ArcGisFeature/ArcGisFeatureRenderer";
|
|
11
|
+
import { Point3d, Transform } from "@itwin/core-geometry";
|
|
12
|
+
describe("ArcGisFeatureRenderer", () => {
|
|
13
|
+
const sandbox = sinon.createSandbox();
|
|
14
|
+
let beginPathSpy;
|
|
15
|
+
let moveToSpy;
|
|
16
|
+
let lineToSpy;
|
|
17
|
+
let strokeSpy;
|
|
18
|
+
let fillSpy;
|
|
19
|
+
let closePathSpy;
|
|
20
|
+
beforeEach(async () => {
|
|
21
|
+
beginPathSpy = sandbox.spy(fakeContext, "beginPath");
|
|
22
|
+
moveToSpy = sandbox.spy(fakeContext, "moveTo");
|
|
23
|
+
lineToSpy = sandbox.spy(fakeContext, "lineTo");
|
|
24
|
+
strokeSpy = sandbox.spy(fakeContext, "stroke");
|
|
25
|
+
fillSpy = sandbox.spy(fakeContext, "fill");
|
|
26
|
+
closePathSpy = sandbox.spy(fakeContext, "closePath");
|
|
27
|
+
});
|
|
28
|
+
afterEach(async () => {
|
|
29
|
+
sandbox.restore();
|
|
30
|
+
});
|
|
31
|
+
it("should render simple path, stride = 2", async () => {
|
|
32
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
33
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
34
|
+
const coords = [1, 2, 3, 4];
|
|
35
|
+
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
36
|
+
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
37
|
+
renderer.renderPath([2], coords, false, 2, true);
|
|
38
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
39
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
40
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
41
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
42
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
43
|
+
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
44
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
45
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
46
|
+
expect(strokeSpy.calledOnce).to.be.true;
|
|
47
|
+
expect(fillSpy.called).to.be.false;
|
|
48
|
+
expect(closePathSpy.called).to.be.false;
|
|
49
|
+
expect(applyFillStyleSpy.calledOnce).to.be.false;
|
|
50
|
+
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
51
|
+
});
|
|
52
|
+
it("should render simple filled path", async () => {
|
|
53
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
54
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
55
|
+
const coords = [1, 2, 3, 4];
|
|
56
|
+
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
57
|
+
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
58
|
+
renderer.renderPath([2], coords, true, 2, true);
|
|
59
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
60
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
61
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
62
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
63
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
64
|
+
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
65
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
66
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
67
|
+
expect(strokeSpy.calledOnce).to.be.true;
|
|
68
|
+
expect(fillSpy.calledOnce).to.be.true;
|
|
69
|
+
expect(closePathSpy.calledOnce).to.be.true;
|
|
70
|
+
expect(applyFillStyleSpy.calledOnce).to.be.true;
|
|
71
|
+
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
72
|
+
});
|
|
73
|
+
it("should render simple Path, stride = 3", async () => {
|
|
74
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
75
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
76
|
+
const coords = [1, 2, 3, 4, 5, 6];
|
|
77
|
+
renderer.renderPath([2], coords, false, 3, true);
|
|
78
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
79
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
80
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
81
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
82
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
83
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[3]);
|
|
84
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[4]);
|
|
85
|
+
expect(strokeSpy.calledOnce).to.be.true;
|
|
86
|
+
expect(fillSpy.called).to.be.false;
|
|
87
|
+
expect(closePathSpy.called).to.be.false;
|
|
88
|
+
});
|
|
89
|
+
it("should render multiple Paths, stride = 2", async () => {
|
|
90
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
91
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
92
|
+
const coords = [1, 2, 3, 4];
|
|
93
|
+
const applyFillStyleSpy = sandbox.spy(symbolRenderer, "applyFillStyle");
|
|
94
|
+
const applyStrokeStyleSpy = sandbox.spy(symbolRenderer, "applyStrokeStyle");
|
|
95
|
+
renderer.renderPath([2], coords, false, 2, true);
|
|
96
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
97
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
98
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0]);
|
|
99
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1]);
|
|
100
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
101
|
+
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
102
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2]);
|
|
103
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3]);
|
|
104
|
+
expect(strokeSpy.calledOnce).to.be.true;
|
|
105
|
+
expect(fillSpy.called).to.be.false;
|
|
106
|
+
expect(closePathSpy.called).to.be.false;
|
|
107
|
+
expect(applyFillStyleSpy.calledOnce).to.be.false;
|
|
108
|
+
expect(applyStrokeStyleSpy.calledOnce).to.be.true;
|
|
109
|
+
});
|
|
110
|
+
it("should not render invalid with stride value", async () => {
|
|
111
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
112
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
113
|
+
const coords = [1, 2, 3, 4];
|
|
114
|
+
renderer.renderPath([2], coords, false, 1, true);
|
|
115
|
+
renderer.renderPath([2], coords, false, 4, true);
|
|
116
|
+
renderer.renderPoint([2], coords, 1, true);
|
|
117
|
+
renderer.renderPoint([2], coords, 4, true);
|
|
118
|
+
expect(lineToSpy.calledOnce).to.be.false;
|
|
119
|
+
expect(strokeSpy.calledOnce).to.be.false;
|
|
120
|
+
expect(fillSpy.called).to.be.false;
|
|
121
|
+
expect(closePathSpy.called).to.be.false;
|
|
122
|
+
});
|
|
123
|
+
it("should render Path and apply transform, relativeCoords OFF", async () => {
|
|
124
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
125
|
+
const fakeOffset = 10;
|
|
126
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
127
|
+
const coords = [1, 2, 3, 4];
|
|
128
|
+
renderer.renderPath([2], coords, false, 2, false);
|
|
129
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
130
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
131
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0] + fakeOffset);
|
|
132
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1] + fakeOffset);
|
|
133
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
134
|
+
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
135
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[2] + fakeOffset);
|
|
136
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[3] + fakeOffset);
|
|
137
|
+
});
|
|
138
|
+
it("should render single Point, no transform, relativeCoords OFF", async () => {
|
|
139
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
140
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
141
|
+
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
142
|
+
const coords = [1, 2];
|
|
143
|
+
renderer.renderPoint([], coords, 2, false);
|
|
144
|
+
expect(drawPointStub.calledOnce).to.be.true;
|
|
145
|
+
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);
|
|
146
|
+
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);
|
|
147
|
+
});
|
|
148
|
+
it("should render single Point and apply transform, relativeCoords OFF", async () => {
|
|
149
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
150
|
+
const fakeOffset = 10;
|
|
151
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
152
|
+
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
153
|
+
const coords = [1, 2];
|
|
154
|
+
renderer.renderPoint([], coords, 2, false);
|
|
155
|
+
expect(drawPointStub.calledOnce).to.be.true;
|
|
156
|
+
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
157
|
+
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
158
|
+
});
|
|
159
|
+
it("should render multi Point, transform, relativeCoords OFF", async () => {
|
|
160
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
161
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer);
|
|
162
|
+
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
163
|
+
const coords = [1, 2, 3, 4];
|
|
164
|
+
renderer.renderPoint([2], coords, 2, false);
|
|
165
|
+
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
166
|
+
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0]);
|
|
167
|
+
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1]);
|
|
168
|
+
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2]);
|
|
169
|
+
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3]);
|
|
170
|
+
});
|
|
171
|
+
it("should render multi Point and apply transform, relativeCoords OFF", async () => {
|
|
172
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
173
|
+
const fakeOffset = 10;
|
|
174
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
175
|
+
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
176
|
+
const coords = [1, 2, 3, 4];
|
|
177
|
+
renderer.renderPoint([2], coords, 2, false);
|
|
178
|
+
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
179
|
+
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
180
|
+
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
181
|
+
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[2] + fakeOffset);
|
|
182
|
+
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[3] + fakeOffset);
|
|
183
|
+
});
|
|
184
|
+
it("should render multi Point and apply transform, relativeCoords ON", async () => {
|
|
185
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryPoint", PhillyLandmarksDataset.phillySimplePointDrawingInfo.drawingInfo.renderer);
|
|
186
|
+
const fakeOffset = 10;
|
|
187
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
188
|
+
const drawPointStub = sandbox.stub(ArcGisSymbologyRenderer.prototype, "drawPoint");
|
|
189
|
+
const coords = [1, 2, 3, 4];
|
|
190
|
+
renderer.renderPoint([2], coords, 2, true);
|
|
191
|
+
expect(drawPointStub.getCalls().length).to.equals(2);
|
|
192
|
+
expect(drawPointStub.getCalls()[0].args[1]).to.equals(coords[0] + fakeOffset);
|
|
193
|
+
expect(drawPointStub.getCalls()[0].args[2]).to.equals(coords[1] + fakeOffset);
|
|
194
|
+
expect(drawPointStub.getCalls()[1].args[1]).to.equals(coords[0] + coords[2] + fakeOffset);
|
|
195
|
+
expect(drawPointStub.getCalls()[1].args[2]).to.equals(coords[1] + coords[3] + fakeOffset);
|
|
196
|
+
});
|
|
197
|
+
it("should render and apply transform, relativeCoords ON", async () => {
|
|
198
|
+
const symbolRenderer = new ArcGisSymbologyRenderer("esriGeometryLine", PhillyLandmarksDataset.phillySimpleLineDrawingInfo.drawingInfo.renderer);
|
|
199
|
+
const fakeOffset = 10;
|
|
200
|
+
const renderer = new ArcGisFeatureRenderer(fakeContext, symbolRenderer, Transform.createTranslation(Point3d.create(fakeOffset, fakeOffset)));
|
|
201
|
+
const coords = [1, 2, 3, 4];
|
|
202
|
+
renderer.renderPath([2], coords, false, 2, true);
|
|
203
|
+
expect(beginPathSpy.calledOnce).to.be.true;
|
|
204
|
+
expect(moveToSpy.calledOnce).to.be.true;
|
|
205
|
+
expect(moveToSpy.getCalls()[0].args[0]).to.equals(coords[0] + fakeOffset);
|
|
206
|
+
expect(moveToSpy.getCalls()[0].args[1]).to.equals(coords[1] + fakeOffset);
|
|
207
|
+
expect(lineToSpy.calledOnce).to.be.true;
|
|
208
|
+
// IMPORTANT: Only first coord is absolute, following coords are expressed relative to previous coord.
|
|
209
|
+
expect(lineToSpy.getCalls()[0].args[0]).to.equals(coords[0] + coords[2] + fakeOffset);
|
|
210
|
+
expect(lineToSpy.getCalls()[0].args[1]).to.equals(coords[1] + coords[3] + fakeOffset);
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
213
|
//# sourceMappingURL=ArcGisFeatureRenderer.test.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export {};
|
|
2
2
|
//# sourceMappingURL=ArcGisFeatureResponse.test.d.ts.map
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { ByteStream } from "@itwin/core-bentley";
|
|
6
|
-
import { Base64EncodedString } from "@itwin/core-common";
|
|
7
|
-
import { expect } from "chai";
|
|
8
|
-
import * as sinon from "sinon";
|
|
9
|
-
import { ArcGisFeatureResponse } from "../../ArcGisFeature/ArcGisFeatureResponse";
|
|
10
|
-
import { esriPBuffer } from "../../ArcGisFeature/esriPBuffer.gen";
|
|
11
|
-
import { PhillyLandmarksDataset } from "./PhillyLandmarksDataset";
|
|
12
|
-
describe("ArcGisFeatureResponse", () => {
|
|
13
|
-
const sandbox = sinon.createSandbox();
|
|
14
|
-
afterEach(async () => {
|
|
15
|
-
sandbox.restore();
|
|
16
|
-
});
|
|
17
|
-
it("should return undefined if http error", async () => {
|
|
18
|
-
const response = new ArcGisFeatureResponse("PBF", Promise.resolve({ status: 404 }));
|
|
19
|
-
const data = await response.getResponseData();
|
|
20
|
-
expect(data).to.be.undefined;
|
|
21
|
-
});
|
|
22
|
-
it("should return undefined if invalid PBF data", async () => {
|
|
23
|
-
const response = new ArcGisFeatureResponse("PBF", Promise.resolve({
|
|
24
|
-
status: 404,
|
|
25
|
-
arrayBuffer: async () => {
|
|
26
|
-
return Promise.resolve(undefined);
|
|
27
|
-
},
|
|
28
|
-
}));
|
|
29
|
-
const data = await response.getResponseData();
|
|
30
|
-
expect(data).to.be.undefined;
|
|
31
|
-
});
|
|
32
|
-
it("should create FeatureCollectionPBuffer from PBF data", async () => {
|
|
33
|
-
const fakeResponse = {
|
|
34
|
-
headers: { "content-type": "pbf" },
|
|
35
|
-
arrayBuffer: async () => {
|
|
36
|
-
const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);
|
|
37
|
-
return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);
|
|
38
|
-
},
|
|
39
|
-
status: 200,
|
|
40
|
-
};
|
|
41
|
-
const response = new ArcGisFeatureResponse("PBF", Promise.resolve(fakeResponse));
|
|
42
|
-
const data = await response.getResponseData();
|
|
43
|
-
expect(data
|
|
44
|
-
expect(
|
|
45
|
-
});
|
|
46
|
-
it("should report exceededTransferLimit from PBF object", async () => {
|
|
47
|
-
const collection = esriPBuffer.FeatureCollectionPBuffer.fromObject(PhillyLandmarksDataset.phillyExceededTransferLimitPbf);
|
|
48
|
-
const fakeResponse = {
|
|
49
|
-
headers: { "content-type": "pbf" },
|
|
50
|
-
arrayBuffer: async () => {
|
|
51
|
-
const byteArray = collection.serialize();
|
|
52
|
-
return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);
|
|
53
|
-
},
|
|
54
|
-
status: 200,
|
|
55
|
-
};
|
|
56
|
-
const response = new ArcGisFeatureResponse("PBF", Promise.resolve(fakeResponse));
|
|
57
|
-
const data = await response.getResponseData();
|
|
58
|
-
expect(data
|
|
59
|
-
expect(
|
|
60
|
-
});
|
|
61
|
-
it("should return undefined if invalid JSON", async () => {
|
|
62
|
-
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
63
|
-
status: 404,
|
|
64
|
-
json: async () => {
|
|
65
|
-
return undefined;
|
|
66
|
-
},
|
|
67
|
-
}));
|
|
68
|
-
const data = await response.getResponseData();
|
|
69
|
-
expect(data).to.be.undefined;
|
|
70
|
-
});
|
|
71
|
-
it("should return JSON data", async () => {
|
|
72
|
-
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
73
|
-
status: 200,
|
|
74
|
-
json: async () => {
|
|
75
|
-
return { exceededTransferLimit: false };
|
|
76
|
-
},
|
|
77
|
-
}));
|
|
78
|
-
const data = await response.getResponseData();
|
|
79
|
-
expect(data
|
|
80
|
-
expect(data
|
|
81
|
-
});
|
|
82
|
-
it("should report exceededTransferLimit from JSON object", async () => {
|
|
83
|
-
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
84
|
-
status: 200,
|
|
85
|
-
json: async () => {
|
|
86
|
-
return { exceededTransferLimit: true };
|
|
87
|
-
},
|
|
88
|
-
}));
|
|
89
|
-
const data = await response.getResponseData();
|
|
90
|
-
expect(data
|
|
91
|
-
});
|
|
92
|
-
});
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { ByteStream } from "@itwin/core-bentley";
|
|
6
|
+
import { Base64EncodedString } from "@itwin/core-common";
|
|
7
|
+
import { expect } from "chai";
|
|
8
|
+
import * as sinon from "sinon";
|
|
9
|
+
import { ArcGisFeatureResponse } from "../../ArcGisFeature/ArcGisFeatureResponse";
|
|
10
|
+
import { esriPBuffer } from "../../ArcGisFeature/esriPBuffer.gen";
|
|
11
|
+
import { PhillyLandmarksDataset } from "./PhillyLandmarksDataset";
|
|
12
|
+
describe("ArcGisFeatureResponse", () => {
|
|
13
|
+
const sandbox = sinon.createSandbox();
|
|
14
|
+
afterEach(async () => {
|
|
15
|
+
sandbox.restore();
|
|
16
|
+
});
|
|
17
|
+
it("should return undefined if http error", async () => {
|
|
18
|
+
const response = new ArcGisFeatureResponse("PBF", Promise.resolve({ status: 404 }));
|
|
19
|
+
const data = await response.getResponseData();
|
|
20
|
+
expect(data).to.be.undefined;
|
|
21
|
+
});
|
|
22
|
+
it("should return undefined if invalid PBF data", async () => {
|
|
23
|
+
const response = new ArcGisFeatureResponse("PBF", Promise.resolve({
|
|
24
|
+
status: 404,
|
|
25
|
+
arrayBuffer: async () => {
|
|
26
|
+
return Promise.resolve(undefined);
|
|
27
|
+
},
|
|
28
|
+
}));
|
|
29
|
+
const data = await response.getResponseData();
|
|
30
|
+
expect(data).to.be.undefined;
|
|
31
|
+
});
|
|
32
|
+
it("should create FeatureCollectionPBuffer from PBF data", async () => {
|
|
33
|
+
const fakeResponse = {
|
|
34
|
+
headers: { "content-type": "pbf" },
|
|
35
|
+
arrayBuffer: async () => {
|
|
36
|
+
const byteArray = Base64EncodedString.toUint8Array(PhillyLandmarksDataset.phillyTransportationGetFeatureInfoQueryEncodedPbf);
|
|
37
|
+
return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);
|
|
38
|
+
},
|
|
39
|
+
status: 200,
|
|
40
|
+
};
|
|
41
|
+
const response = new ArcGisFeatureResponse("PBF", Promise.resolve(fakeResponse));
|
|
42
|
+
const data = await response.getResponseData();
|
|
43
|
+
expect(data?.exceedTransferLimit).to.be.false;
|
|
44
|
+
expect(data?.data instanceof esriPBuffer.FeatureCollectionPBuffer).to.be.true;
|
|
45
|
+
});
|
|
46
|
+
it("should report exceededTransferLimit from PBF object", async () => {
|
|
47
|
+
const collection = esriPBuffer.FeatureCollectionPBuffer.fromObject(PhillyLandmarksDataset.phillyExceededTransferLimitPbf);
|
|
48
|
+
const fakeResponse = {
|
|
49
|
+
headers: { "content-type": "pbf" },
|
|
50
|
+
arrayBuffer: async () => {
|
|
51
|
+
const byteArray = collection.serialize();
|
|
52
|
+
return Promise.resolve(byteArray ? ByteStream.fromUint8Array(byteArray).arrayBuffer : undefined);
|
|
53
|
+
},
|
|
54
|
+
status: 200,
|
|
55
|
+
};
|
|
56
|
+
const response = new ArcGisFeatureResponse("PBF", Promise.resolve(fakeResponse));
|
|
57
|
+
const data = await response.getResponseData();
|
|
58
|
+
expect(data?.exceedTransferLimit).to.be.true;
|
|
59
|
+
expect(data?.data instanceof esriPBuffer.FeatureCollectionPBuffer).to.be.true;
|
|
60
|
+
});
|
|
61
|
+
it("should return undefined if invalid JSON", async () => {
|
|
62
|
+
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
63
|
+
status: 404,
|
|
64
|
+
json: async () => {
|
|
65
|
+
return undefined;
|
|
66
|
+
},
|
|
67
|
+
}));
|
|
68
|
+
const data = await response.getResponseData();
|
|
69
|
+
expect(data).to.be.undefined;
|
|
70
|
+
});
|
|
71
|
+
it("should return JSON data", async () => {
|
|
72
|
+
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
73
|
+
status: 200,
|
|
74
|
+
json: async () => {
|
|
75
|
+
return { exceededTransferLimit: false };
|
|
76
|
+
},
|
|
77
|
+
}));
|
|
78
|
+
const data = await response.getResponseData();
|
|
79
|
+
expect(data?.data).not.to.be.undefined;
|
|
80
|
+
expect(data?.exceedTransferLimit).to.be.false;
|
|
81
|
+
});
|
|
82
|
+
it("should report exceededTransferLimit from JSON object", async () => {
|
|
83
|
+
const response = new ArcGisFeatureResponse("JSON", Promise.resolve({
|
|
84
|
+
status: 200,
|
|
85
|
+
json: async () => {
|
|
86
|
+
return { exceededTransferLimit: true };
|
|
87
|
+
},
|
|
88
|
+
}));
|
|
89
|
+
const data = await response.getResponseData();
|
|
90
|
+
expect(data?.exceedTransferLimit).to.be.true;
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
93
|
//# sourceMappingURL=ArcGisFeatureResponse.test.js.map
|