@@ -345,6 +345,83 @@ describe('contour calc', function() {
345345 } ) ;
346346} ) ;
347347
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+
348425describe ( 'contour edits' , function ( ) {
349426 var gd ;
350427
0 commit comments