|
1 | 1 | var Plotly = require('@lib');
|
2 | 2 | var Lib = require('@src/lib');
|
| 3 | +var ScatterPolarGl = require('@src/traces/scatterpolargl'); |
3 | 4 |
|
4 | 5 | var d3 = require('d3');
|
5 | 6 | var createGraphDiv = require('../assets/create_graph_div');
|
@@ -251,3 +252,120 @@ describe('Test scatterpolargl interactions:', function() {
|
251 | 252 | .then(done);
|
252 | 253 | });
|
253 | 254 | });
|
| 255 | + |
| 256 | +describe('Test scatterpolargl autorange:', function() { |
| 257 | + var gd; |
| 258 | + |
| 259 | + beforeEach(function() { |
| 260 | + gd = createGraphDiv(); |
| 261 | + }); |
| 262 | + |
| 263 | + afterEach(function() { |
| 264 | + Plotly.purge(gd); |
| 265 | + destroyGraphDiv(); |
| 266 | + }); |
| 267 | + |
| 268 | + describe('should return the same value as SVG scatter for ~small~ data', function() { |
| 269 | + var specs = [ |
| 270 | + {name: 'markers', fig: require('@mocks/polar_scatter.json')}, |
| 271 | + {name: 'lines', fig: require('@mocks/polar_line.json')}, |
| 272 | + ]; |
| 273 | + |
| 274 | + specs.forEach(function(s) { |
| 275 | + it('@gl - case ' + s.name, function(done) { |
| 276 | + var svgRange; |
| 277 | + |
| 278 | + // ensure the mocks have auto-range turned on |
| 279 | + var svgFig = Lib.extendDeep({}, s.fig); |
| 280 | + Lib.extendDeep(svgFig.layout.polar, {radialaxis: {autorange: true}}); |
| 281 | + |
| 282 | + var glFig = Lib.extendDeep({}, svgFig); |
| 283 | + glFig.data.forEach(function(t) { t.type = 'scatterpolargl'; }); |
| 284 | + |
| 285 | + Plotly.newPlot(gd, svgFig).then(function() { |
| 286 | + svgRange = gd._fullLayout.polar.radialaxis.range; |
| 287 | + }) |
| 288 | + .then(function() { |
| 289 | + return Plotly.newPlot(gd, glFig); |
| 290 | + }) |
| 291 | + .then(function() { |
| 292 | + expect(gd._fullLayout.polar.radialaxis.range) |
| 293 | + .toBeCloseToArray(svgRange, 'gl radial range'); |
| 294 | + }) |
| 295 | + .catch(failTest) |
| 296 | + .then(done); |
| 297 | + }); |
| 298 | + }); |
| 299 | + }); |
| 300 | + |
| 301 | + describe('should return the approximative values for ~big~ data', function() { |
| 302 | + var cnt; |
| 303 | + |
| 304 | + beforeEach(function() { |
| 305 | + // to avoid expansive draw calls (which could be problematic on CI) |
| 306 | + cnt = 0; |
| 307 | + spyOn(ScatterPolarGl, 'plot').and.callFake(function() { |
| 308 | + cnt++; |
| 309 | + }); |
| 310 | + }); |
| 311 | + |
| 312 | + // threshold for 'fast' axis expansion routine |
| 313 | + var N = 1e5; |
| 314 | + var r = new Array(N); |
| 315 | + var ms = new Array(N); |
| 316 | + |
| 317 | + Lib.seedPseudoRandom(); |
| 318 | + |
| 319 | + for(var i = 0; i < N; i++) { |
| 320 | + r[i] = Lib.pseudoRandom(); |
| 321 | + ms[i] = 20 * Lib.pseudoRandom() + 20; |
| 322 | + } |
| 323 | + |
| 324 | + it('@gl - case scalar marker.size', function(done) { |
| 325 | + Plotly.newPlot(gd, [{ |
| 326 | + type: 'scatterpolargl', |
| 327 | + mode: 'markers', |
| 328 | + r: r, |
| 329 | + marker: {size: 10} |
| 330 | + }]) |
| 331 | + .then(function() { |
| 332 | + expect(gd._fullLayout.polar.radialaxis.range) |
| 333 | + .toBeCloseToArray([0, 1.0799], 2, 'radial range'); |
| 334 | + expect(cnt).toBe(1, '# of plot call'); |
| 335 | + }) |
| 336 | + .catch(failTest) |
| 337 | + .then(done); |
| 338 | + }); |
| 339 | + |
| 340 | + it('@gl - case array marker.size', function(done) { |
| 341 | + Plotly.newPlot(gd, [{ |
| 342 | + type: 'scatterpolargl', |
| 343 | + mode: 'markers', |
| 344 | + r: r, |
| 345 | + marker: ms |
| 346 | + }]) |
| 347 | + .then(function() { |
| 348 | + expect(gd._fullLayout.polar.radialaxis.range) |
| 349 | + .toBeCloseToArray([0, 1.0465], 2, 'radial range'); |
| 350 | + expect(cnt).toBe(1, '# of plot call'); |
| 351 | + }) |
| 352 | + .catch(failTest) |
| 353 | + .then(done); |
| 354 | + }); |
| 355 | + |
| 356 | + it('@gl - case mode:lines', function(done) { |
| 357 | + Plotly.newPlot(gd, [{ |
| 358 | + type: 'scatterpolargl', |
| 359 | + mode: 'lines', |
| 360 | + r: r, |
| 361 | + }]) |
| 362 | + .then(function() { |
| 363 | + expect(gd._fullLayout.polar.radialaxis.range) |
| 364 | + .toBeCloseToArray([0, 0.9999], 2, 'radial range'); |
| 365 | + expect(cnt).toBe(1, '# of plot call'); |
| 366 | + }) |
| 367 | + .catch(failTest) |
| 368 | + .then(done); |
| 369 | + }); |
| 370 | + }); |
| 371 | +}); |
0 commit comments