Skip to content

Commit b65fa61

Browse files
committed
adding jasmine tests for camera init
1 parent c9eed54 commit b65fa61

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

test/jasmine/tests/gl3d_plot_interact_test.js

+117
Original file line numberDiff line numberDiff line change
@@ -392,6 +392,122 @@ describe('Test gl3d plots', function() {
392392
.then(done);
393393
});
394394

395+
it('@gl should set the camera dragmode to orbit if the camera.up.z vector is set to be tilted', function(done) {
396+
Plotly.plot(gd, {
397+
data: [{
398+
type: 'scatter3d',
399+
x: [1, 2, 3],
400+
y: [2, 3, 1],
401+
z: [3, 1, 2]
402+
}],
403+
layout: {
404+
scene: {
405+
camera: {
406+
up: { x:-0.5777, y:-0.5777, z:0.5777 }
407+
}
408+
}
409+
}
410+
})
411+
.then(delay(20))
412+
.then(function() {
413+
expect(gd._fullLayout.scene.dragmode === 'orbit').toBe(true);
414+
})
415+
.then(done);
416+
});
417+
418+
it('@gl should set the camera dragmode to turntable if the camera.up.z vector is set to be upwards', function(done) {
419+
Plotly.plot(gd, {
420+
data: [{
421+
type: 'scatter3d',
422+
x: [1, 2, 3],
423+
y: [2, 3, 1],
424+
z: [3, 1, 2]
425+
}],
426+
layout: {
427+
scene: {
428+
camera: {
429+
up: { x:0, y:0, z:100 }
430+
}
431+
}
432+
}
433+
})
434+
.then(delay(20))
435+
.then(function() {
436+
expect(gd._fullLayout.scene.dragmode === 'turntable').toBe(true);
437+
})
438+
.then(done);
439+
});
440+
441+
it('@gl should set the camera dragmode to turntable if the camera.up is not set', function(done) {
442+
Plotly.plot(gd, {
443+
data: [{
444+
type: 'scatter3d',
445+
x: [1, 2, 3],
446+
y: [2, 3, 1],
447+
z: [3, 1, 2]
448+
}],
449+
layout: {
450+
scene: {
451+
camera: {
452+
eye: { x:1, y:1, z:1 },
453+
center: { x:0, y:0, z:0 }
454+
}
455+
}
456+
}
457+
})
458+
.then(delay(20))
459+
.then(function() {
460+
expect(gd._fullLayout.scene.dragmode === 'turntable').toBe(true);
461+
})
462+
.then(done);
463+
});
464+
465+
it('@gl should set the camera dragmode to turntable if any of camera.up.[x|y|z] is missing', function(done) {
466+
Plotly.plot(gd, {
467+
data: [{
468+
type: 'scatter3d',
469+
x: [1, 2, 3],
470+
y: [2, 3, 1],
471+
z: [3, 1, 2]
472+
}],
473+
layout: {
474+
scene: {
475+
camera: {
476+
up: { x:null, z:0 }
477+
}
478+
}
479+
}
480+
})
481+
.then(delay(20))
482+
.then(function() {
483+
expect(gd._fullLayout.scene.dragmode === 'turntable').toBe(true);
484+
})
485+
.then(done);
486+
});
487+
488+
it('@gl should set the camera dragmode to turntable if all camera.up.[x|y|z] are zero or missing', function(done) {
489+
Plotly.plot(gd, {
490+
data: [{
491+
type: 'scatter3d',
492+
x: [1, 2, 3],
493+
y: [2, 3, 1],
494+
z: [3, 1, 2]
495+
}],
496+
layout: {
497+
scene: {
498+
camera: {
499+
up: { x:0, y:0, z:0 }
500+
}
501+
}
502+
}
503+
})
504+
.then(delay(20))
505+
.then(function() {
506+
expect(gd._fullLayout.scene.dragmode === 'turntable').toBe(true);
507+
})
508+
.then(done);
509+
});
510+
395511
it('@gl should be able to reversibly change trace type', function(done) {
396512
var _mock = Lib.extendDeep({}, mock2);
397513
var sceneLayout = { aspectratio: { x: 1, y: 1, z: 1 }, dragmode: 'turntable' };
@@ -405,6 +521,7 @@ describe('Test gl3d plots', function() {
405521
expect(gd.layout.yaxis === undefined).toBe(true);
406522
expect(gd._fullLayout._has('gl3d')).toBe(true);
407523
expect(gd._fullLayout.scene._scene).toBeDefined();
524+
expect(gd._fullLayout.scene._scene.camera).toBeDefined(true);
408525

409526
return Plotly.restyle(gd, 'type', 'scatter');
410527
})

0 commit comments

Comments
 (0)