@@ -345,6 +345,83 @@ describe('contour calc', function() {
345
345
} ) ;
346
346
} ) ;
347
347
348
+ describe ( 'contour edge cases' , function ( ) {
349
+ var gd ;
350
+
351
+ beforeEach ( function ( ) {
352
+ gd = createGraphDiv ( ) ;
353
+ } ) ;
354
+ afterEach ( destroyGraphDiv ) ;
355
+
356
+ it ( 'handles all sorts of merged edge paths' , function ( ) {
357
+ var z = [
358
+ [ 2.38 , 2.34 , 2.36 , 2.37 , 2.36 , 2.37 , 2.36 , 2.36 , 2.34 , 2.35 , 2.34 , 2.36 , 2.38 , 2.37 , 2.35 , 2.34 , 2.35 , 2.36 , 2.36 , 2.34 , 2.33 , 2.34 , 2.33 , 2.37 ] ,
359
+ [ 2.38 , 2.35 , 2.37 , 2.38 , 2.35 , 2.35 , 2.36 , 2.38 , 2.34 , 2.35 , 2.35 , 2.35 , 2.38 , 2.36 , 2.35 , 2.35 , 2.34 , 2.35 , 2.35 , 2.33 , 2.34 , 2.34 , 2.33 , 2.36 ] ,
360
+ [ 2.36 , 2.33 , 2.32 , 2.33 , 2.34 , 2.34 , 2.35 , 2.31 , 2.31 , 2.32 , 2.30 , 2.33 , 2.35 , 2.33 , 2.32 , 2.31 , 2.35 , 2.33 , 2.33 , 2.31 , 2.32 , 2.30 , 2.31 , 2.34 ] ,
361
+ [ 2.36 , 2.34 , 2.32 , 2.31 , 2.32 , 2.34 , 2.35 , 2.33 , 2.31 , 2.34 , 2.33 , 2.33 , 2.35 , 2.33 , 2.32 , 2.32 , 2.35 , 2.33 , 2.33 , 2.33 , 2.33 , 2.30 , 2.32 , 2.34 ] ,
362
+ [ 2.35 , 2.35 , 2.32 , 2.31 , 2.30 , 2.31 , 2.32 , 2.32 , 2.31 , 2.31 , 2.32 , 2.33 , 2.32 , 2.32 , 2.32 , 2.29 , 2.32 , 2.31 , 2.31 , 2.31 , 2.30 , 2.31 , 2.30 , 2.32 ] ,
363
+ [ 2.34 , 2.33 , 2.31 , 2.35 , 2.31 , 2.33 , 2.34 , 2.34 , 2.32 , 2.31 , 2.32 , 2.33 , 2.33 , 2.32 , 2.33 , 2.33 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.33 , 2.33 , 2.32 ] ,
364
+ [ 2.33 , 2.32 , 2.32 , 2.31 , 2.31 , 2.32 , 2.33 , 2.31 , 2.32 , 2.31 , 2.30 , 2.31 , 2.34 , 2.32 , 2.32 , 2.31 , 2.32 , 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.30 , 2.34 ] ,
365
+ [ 2.34 , 2.32 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.31 , 2.32 , 2.30 , 2.32 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.33 , 2.32 , 2.32 , 2.31 , 2.32 , 2.32 ] ,
366
+ [ 2.32 , 2.32 , 2.31 , 2.30 , 2.31 , 2.31 , 2.31 , 2.29 , 2.31 , 2.32 , 2.30 , 2.33 , 2.33 , 2.29 , 2.31 , 2.32 , 2.31 , 2.33 , 2.32 , 2.31 , 2.31 , 2.31 , 2.30 , 2.32 ] ,
367
+ [ 2.33 , 2.33 , 2.32 , 2.33 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.32 , 2.30 , 2.32 , 2.31 , 2.33 , 2.32 , 2.33 , 2.32 , 2.33 , 2.34 , 2.31 , 2.32 , 2.31 , 2.31 , 2.32 ] ,
368
+ [ 2.33 , 2.31 , 2.31 , 2.30 , 2.30 , 2.31 , 2.32 , 2.33 , 2.29 , 2.29 , 2.30 , 2.31 , 2.32 , 2.32 , 2.32 , 2.31 , 2.32 , 2.30 , 2.32 , 2.30 , 2.31 , 2.29 , 2.29 , 2.30 ] ,
369
+ [ 2.32 , 2.31 , 2.32 , 2.32 , 2.31 , 2.32 , 2.33 , 2.33 , 2.31 , 2.31 , 2.32 , 2.33 , 2.33 , 2.32 , 2.33 , 2.33 , 2.30 , 2.32 , 2.31 , 2.30 , 2.30 , 2.31 , 2.31 , 2.31 ] ,
370
+ [ 2.33 , 2.32 , 2.32 , 2.30 , 2.30 , 2.30 , 2.30 , 2.31 , 2.30 , 2.31 , 2.31 , 2.30 , 2.32 , 2.31 , 2.29 , 2.31 , 2.31 , 2.31 , 2.31 , 2.31 , 2.31 , 2.30 , 2.30 , 2.32 ] ,
371
+ [ 2.33 , 2.33 , 2.32 , 2.32 , 2.30 , 2.33 , 2.31 , 2.31 , 2.32 , 2.32 , 2.32 , 2.32 , 2.34 , 2.31 , 2.32 , 2.32 , 2.32 , 2.33 , 2.32 , 2.31 , 2.31 , 2.31 , 2.31 , 2.32 ] ,
372
+ [ 2.33 , 2.33 , 2.30 , 2.33 , 2.31 , 2.32 , 2.31 , 2.31 , 2.30 , 2.31 , 2.30 , 2.32 , 2.33 , 2.32 , 2.31 , 2.30 , 2.31 , 2.33 , 2.31 , 2.32 , 2.30 , 2.31 , 2.31 , 2.32 ] ,
373
+ [ 2.33 , 2.33 , 2.31 , 2.32 , 2.32 , 2.33 , 2.33 , 2.32 , 2.32 , 2.34 , 2.33 , 2.33 , 2.33 , 2.34 , 2.32 , 2.31 , 2.31 , 2.32 , 2.32 , 2.32 , 2.30 , 2.32 , 2.32 , 2.32 ] ,
374
+ [ 2.32 , 2.31 , 2.32 , 2.33 , 2.31 , 2.33 , 2.32 , 2.32 , 2.32 , 2.31 , 2.31 , 2.37 , 2.32 , 2.31 , 2.31 , 2.30 , 2.31 , 2.32 , 2.31 , 2.31 , 2.30 , 2.31 , 2.31 , 2.35 ] ,
375
+ [ 2.33 , 2.32 , 2.32 , 2.31 , 2.34 , 2.35 , 2.32 , 2.33 , 2.33 , 2.32 , 2.33 , 2.34 , 2.33 , 2.33 , 2.32 , 2.32 , 2.33 , 2.34 , 2.32 , 2.32 , 2.31 , 2.31 , 2.32 , 2.33 ] ,
376
+ [ 2.32 , 2.34 , 2.30 , 2.33 , 2.30 , 2.32 , 2.33 , 2.33 , 2.32 , 2.31 , 2.30 , 2.31 , 2.32 , 2.30 , 2.31 , 2.29 , 2.31 , 2.31 , 2.31 , 2.31 , 2.30 , 2.32 , 2.30 , 2.31 ] ,
377
+ [ 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.33 , 2.34 , 2.34 , 2.32 , 2.32 , 2.32 , 2.32 , 2.34 , 2.30 , 2.31 , 2.34 , 2.32 , 2.33 , 2.32 , 2.30 , 2.31 , 2.34 , 2.31 , 2.32 ] ,
378
+ [ 2.31 , 2.30 , 2.33 , 2.30 , 2.29 , 2.30 , 2.31 , 2.32 , 2.30 , 2.30 , 2.32 , 2.31 , 2.32 , 2.32 , 2.31 , 2.31 , 2.30 , 2.32 , 2.31 , 2.31 , 2.31 , 2.31 , 2.30 , 2.29 ] ,
379
+ [ 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.34 , 2.32 , 2.32 , 2.33 , 2.30 , 2.32 , 2.33 , 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.32 , 2.29 , 2.32 , 2.31 , 2.31 , 2.31 , 2.32 ] ,
380
+ [ 2.32 , 2.30 , 2.31 , 2.31 , 2.29 , 2.32 , 2.32 , 2.33 , 2.30 , 2.31 , 2.30 , 2.30 , 2.31 , 2.32 , 2.30 , 2.30 , 2.31 , 2.31 , 2.32 , 2.31 , 2.30 , 2.31 , 2.32 , 2.31 ] ,
381
+ [ 2.32 , 2.31 , 2.32 , 2.34 , 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.34 , 2.34 , 2.32 , 2.32 , 2.34 , 2.31 , 2.30 , 2.33 , 2.31 , 2.34 , 2.31 , 2.33 , 2.31 ] ,
382
+ [ 2.33 , 2.31 , 2.29 , 2.31 , 2.32 , 2.30 , 2.34 , 2.31 , 2.31 , 2.32 , 2.32 , 2.31 , 2.31 , 2.30 , 2.31 , 2.29 , 2.31 , 2.31 , 2.31 , 2.29 , 2.31 , 2.31 , 2.33 , 2.30 ] ,
383
+ [ 2.33 , 2.30 , 2.31 , 2.31 , 2.31 , 2.32 , 2.35 , 2.33 , 2.32 , 2.31 , 2.31 , 2.31 , 2.32 , 2.32 , 2.31 , 2.32 , 2.31 , 2.33 , 2.31 , 2.33 , 2.33 , 2.33 , 2.32 , 2.33 ] ,
384
+ [ 2.30 , 2.30 , 2.31 , 2.33 , 2.30 , 2.31 , 2.31 , 2.31 , 2.29 , 2.32 , 2.29 , 2.31 , 2.31 , 2.31 , 2.31 , 2.30 , 2.29 , 2.32 , 2.31 , 2.31 , 2.31 , 2.32 , 2.32 , 2.30 ] ,
385
+ [ 2.32 , 2.31 , 2.31 , 2.31 , 2.32 , 2.33 , 2.32 , 2.34 , 2.30 , 2.32 , 2.33 , 2.31 , 2.33 , 2.32 , 2.31 , 2.32 , 2.32 , 2.32 , 2.32 , 2.30 , 2.32 , 2.32 , 2.32 , 2.32 ] ,
386
+ [ 2.34 , 2.33 , 2.30 , 2.30 , 2.33 , 2.30 , 2.31 , 2.31 , 2.31 , 2.30 , 2.31 , 2.31 , 2.35 , 2.31 , 2.32 , 2.32 , 2.30 , 2.31 , 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.31 ] ,
387
+ [ 2.35 , 2.32 , 2.30 , 2.32 , 2.31 , 2.32 , 2.33 , 2.34 , 2.34 , 2.31 , 2.33 , 2.32 , 2.35 , 2.36 , 2.31 , 2.34 , 2.33 , 2.33 , 2.32 , 2.33 , 2.32 , 2.32 , 2.33 , 2.34 ] ,
388
+ [ 2.34 , 2.31 , 2.30 , 2.31 , 2.32 , 2.34 , 2.34 , 2.29 , 2.29 , 2.30 , 2.30 , 2.32 , 2.31 , 2.32 , 2.32 , 2.31 , 2.30 , 2.31 , 2.33 , 2.32 , 2.33 , 2.32 , 2.29 , 2.32 ] ,
389
+ [ 2.33 , 2.34 , 2.33 , 2.33 , 2.32 , 2.34 , 2.34 , 2.33 , 2.32 , 2.33 , 2.33 , 2.33 , 2.33 , 2.32 , 2.33 , 2.33 , 2.31 , 2.33 , 2.33 , 2.32 , 2.33 , 2.34 , 2.32 , 2.31 ] ,
390
+ [ 2.33 , 2.32 , 2.31 , 2.30 , 2.32 , 2.31 , 2.31 , 2.32 , 2.31 , 2.30 , 2.29 , 2.32 , 2.33 , 2.31 , 2.33 , 2.30 , 2.30 , 2.31 , 2.31 , 2.31 , 2.32 , 2.32 , 2.34 , 2.32 ] ,
391
+ [ 2.32 , 2.32 , 2.31 , 2.32 , 2.32 , 2.32 , 2.35 , 2.33 , 2.33 , 2.31 , 2.32 , 2.34 , 2.32 , 2.32 , 2.36 , 2.33 , 2.33 , 2.33 , 2.32 , 2.34 , 2.36 , 2.32 , 2.34 , 2.32 ] ,
392
+ [ 2.32 , 2.30 , 2.30 , 2.32 , 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.29 , 2.30 , 2.34 , 2.32 , 2.32 , 2.30 , 2.31 , 2.34 , 2.32 , 2.32 , 2.32 , 2.32 , 2.30 , 2.30 , 2.30 ] ,
393
+ [ 2.32 , 2.30 , 2.33 , 2.33 , 2.34 , 2.32 , 2.32 , 2.31 , 2.32 , 2.31 , 2.33 , 2.32 , 2.34 , 2.33 , 2.31 , 2.33 , 2.33 , 2.32 , 2.32 , 2.31 , 2.33 , 2.31 , 2.31 , 2.32 ] ,
394
+ [ 2.30 , 2.33 , 2.30 , 2.31 , 2.32 , 2.30 , 2.31 , 2.31 , 2.31 , 2.30 , 2.31 , 2.33 , 2.32 , 2.30 , 2.30 , 2.32 , 2.30 , 2.31 , 2.31 , 2.31 , 2.30 , 2.30 , 2.30 , 2.31 ] ,
395
+ [ 2.34 , 2.32 , 2.33 , 2.34 , 2.33 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.33 , 2.34 , 2.32 , 2.32 , 2.32 , 2.31 , 2.34 , 2.32 , 2.31 , 2.31 , 2.32 , 2.31 , 2.31 , 2.33 ] ,
396
+ [ 2.32 , 2.32 , 2.31 , 2.30 , 2.31 , 2.30 , 2.31 , 2.30 , 2.31 , 2.31 , 2.30 , 2.32 , 2.33 , 2.31 , 2.31 , 2.30 , 2.31 , 2.32 , 2.31 , 2.31 , 2.31 , 2.30 , 2.31 , 2.32 ] ,
397
+ [ 2.33 , 2.32 , 2.33 , 2.32 , 2.32 , 2.33 , 2.32 , 2.32 , 2.33 , 2.31 , 2.33 , 2.32 , 2.32 , 2.32 , 2.33 , 2.31 , 2.32 , 2.34 , 2.33 , 2.31 , 2.33 , 2.31 , 2.34 , 2.34 ] ,
398
+ [ 2.34 , 2.31 , 2.31 , 2.32 , 2.30 , 2.34 , 2.32 , 2.31 , 2.30 , 2.30 , 2.31 , 2.32 , 2.33 , 2.31 , 2.30 , 2.32 , 2.30 , 2.32 , 2.32 , 2.32 , 2.29 , 2.32 , 2.31 , 2.31 ] ,
399
+ [ 2.33 , 2.33 , 2.32 , 2.34 , 2.34 , 2.33 , 2.32 , 2.31 , 2.32 , 2.33 , 2.33 , 2.31 , 2.33 , 2.32 , 2.32 , 2.36 , 2.31 , 2.33 , 2.31 , 2.32 , 2.31 , 2.32 , 2.33 , 2.31 ] ,
400
+ [ 2.33 , 2.31 , 2.30 , 2.31 , 2.31 , 2.31 , 2.31 , 2.31 , 2.31 , 2.29 , 2.30 , 2.31 , 2.31 , 2.30 , 2.29 , 2.30 , 2.31 , 2.31 , 2.31 , 2.30 , 2.31 , 2.30 , 2.30 , 2.33 ] ,
401
+ [ 2.32 , 2.31 , 2.33 , 2.29 , 2.30 , 2.32 , 2.31 , 2.32 , 2.31 , 2.30 , 2.32 , 2.33 , 2.32 , 2.32 , 2.32 , 2.33 , 2.31 , 2.32 , 2.32 , 2.32 , 2.32 , 2.32 , 2.30 , 2.32 ] ,
402
+ [ 2.33 , 2.32 , 2.32 , 2.32 , 2.30 , 2.33 , 2.31 , 2.32 , 2.31 , 2.30 , 2.31 , 2.33 , 2.33 , 2.32 , 2.32 , 2.31 , 2.31 , 2.31 , 2.31 , 2.31 , 2.29 , 2.31 , 2.31 , 2.31 ] ,
403
+ [ 2.33 , 2.33 , 2.33 , 2.32 , 2.31 , 2.33 , 2.33 , 2.32 , 2.34 , 2.33 , 2.34 , 2.34 , 2.33 , 2.33 , 2.31 , 2.32 , 2.31 , 2.33 , 2.34 , 2.31 , 2.32 , 2.32 , 2.32 , 2.33 ] ,
404
+ [ 2.35 , 2.33 , 2.31 , 2.32 , 2.32 , 2.34 , 2.35 , 2.31 , 2.32 , 2.30 , 2.31 , 2.33 , 2.33 , 2.32 , 2.32 , 2.32 , 2.32 , 2.40 , 2.33 , 2.32 , 2.34 , 2.31 , 2.31 , 2.34 ] ,
405
+ [ 2.35 , 2.33 , 2.33 , 2.32 , 2.33 , 2.34 , 2.34 , 2.32 , 2.33 , 2.32 , 2.33 , 2.34 , 2.36 , 2.33 , 2.33 , 2.34 , 2.34 , 2.34 , 2.34 , 2.34 , 2.34 , 2.32 , 2.34 , 2.35 ]
406
+ ] ;
407
+
408
+ var data = [ {
409
+ z : z ,
410
+ type : 'contour' ,
411
+ showscale : true ,
412
+ contours : {
413
+ start : 2.2 ,
414
+ end : 2.4 ,
415
+ size : 0.02
416
+ }
417
+ } ] ;
418
+ Plotly . newPlot ( gd , data ) ;
419
+
420
+ expect ( document . querySelectorAll ( '.contour .openline' ) . length ) . toBe ( 22 ) ;
421
+ expect ( document . querySelectorAll ( '.contour .closedline' ) . length ) . toBe ( 122 ) ;
422
+ } ) ;
423
+ } ) ;
424
+
348
425
describe ( 'contour edits' , function ( ) {
349
426
var gd ;
350
427
0 commit comments