Skip to content

Commit f6a5541

Browse files
committed
test(SphereMapper): add large coordinate test
1 parent 90c06b6 commit f6a5541

File tree

3 files changed

+81
-0
lines changed

3 files changed

+81
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
/* eslint-disable no-await-in-loop */
2+
import vtkActor from 'vtk.js/Sources/Rendering/Core/Actor';
3+
import vtkOpenGLRenderWindow from 'vtk.js/Sources/Rendering/OpenGL/RenderWindow';
4+
import vtkRenderer from 'vtk.js/Sources/Rendering/Core/Renderer';
5+
import vtkRenderWindow from 'vtk.js/Sources/Rendering/Core/RenderWindow';
6+
import vtkPlaneSource from 'vtk.js/Sources/Filters/Sources/PlaneSource';
7+
import vtkSphereMapper from 'vtk.js/Sources/Rendering/Core/SphereMapper';
8+
9+
import test from 'tape';
10+
import testUtils from 'vtk.js/Sources/Testing/testUtils';
11+
12+
import baseline1 from './testLargeCoordinates1.png';
13+
import baseline2 from './testLargeCoordinates2.png';
14+
15+
test.onlyIfWebGL('Test vtkSphereMapper large coordinates', async (t) => {
16+
const gc = testUtils.createGarbageCollector();
17+
t.ok('Rendering', 'vtkSphereMapper: large coordinates');
18+
19+
// Create come control UI
20+
const container = document.querySelector('body');
21+
const renderWindowContainer = gc.registerDOMElement(
22+
document.createElement('div')
23+
);
24+
container.appendChild(renderWindowContainer);
25+
26+
const renderWindow = gc.registerResource(vtkRenderWindow.newInstance());
27+
const renderer = gc.registerResource(vtkRenderer.newInstance());
28+
renderWindow.addRenderer(renderer);
29+
30+
const X = 9000000;
31+
const planeSource = gc.registerResource(
32+
vtkPlaneSource.newInstance({
33+
point1: [1 + X, 0, 0],
34+
point2: [0 + X, 1, 0],
35+
origin: [X, 0, 0],
36+
})
37+
);
38+
const mapper = gc.registerResource(vtkSphereMapper.newInstance());
39+
const actor = gc.registerResource(vtkActor.newInstance());
40+
41+
actor.setMapper(mapper);
42+
mapper.setInputConnection(planeSource.getOutputPort());
43+
44+
const glwindow = gc.registerResource(vtkOpenGLRenderWindow.newInstance());
45+
glwindow.setContainer(renderWindowContainer);
46+
renderWindow.addView(glwindow);
47+
glwindow.setSize(400, 400);
48+
49+
renderer.addActor(actor);
50+
renderer.resetCamera();
51+
52+
function testBaseline(baseline, azimuth) {
53+
renderer.getActiveCamera().azimuth(azimuth);
54+
renderer.resetCameraClippingRange();
55+
const promise = glwindow
56+
.captureNextImage()
57+
.then((image) =>
58+
testUtils.compareImages(
59+
image,
60+
[baseline],
61+
'Rendering/OpenGL/SphereMapper/',
62+
t,
63+
0.5
64+
)
65+
);
66+
renderWindow.render();
67+
return promise;
68+
}
69+
70+
await [
71+
[baseline1, -4],
72+
[baseline2, -8],
73+
]
74+
.reduce(
75+
(p, [baseline, azimuth]) => p.then(() => testBaseline(baseline, azimuth)),
76+
Promise.resolve()
77+
)
78+
.finally(() => {
79+
gc.releaseResources();
80+
});
81+
});
73.6 KB
Loading
72.7 KB
Loading

0 commit comments

Comments
 (0)