@@ -89,6 +89,42 @@ describe('heatmap supplyDefaults', function() {
89
89
expect ( traceOut . visible ) . toBe ( false ) ;
90
90
} ) ;
91
91
92
+ it ( 'should set paddings to 0 when not defined' , function ( ) {
93
+ traceIn = {
94
+ type : 'heatmap' ,
95
+ z : [ [ 1 , 2 ] , [ 3 , 4 ] ]
96
+ } ;
97
+
98
+ supplyDefaults ( traceIn , traceOut , defaultColor , layout ) ;
99
+ expect ( traceOut . xgap ) . toBe ( 0 ) ;
100
+ expect ( traceOut . ygap ) . toBe ( 0 ) ;
101
+ } ) ;
102
+
103
+ it ( 'should not step on defined paddings' , function ( ) {
104
+ traceIn = {
105
+ xgap : 10 ,
106
+ type : 'heatmap' ,
107
+ z : [ [ 1 , 2 ] , [ 3 , 4 ] ]
108
+ } ;
109
+
110
+ supplyDefaults ( traceIn , traceOut , defaultColor , layout ) ;
111
+ expect ( traceOut . xgap ) . toBe ( 10 ) ;
112
+ expect ( traceOut . ygap ) . toBe ( 0 ) ;
113
+ } ) ;
114
+
115
+ it ( 'should not coerce gap if zsmooth is set' , function ( ) {
116
+ traceIn = {
117
+ xgap : 10 ,
118
+ zsmooth : 'best' ,
119
+ type : 'heatmap' ,
120
+ z : [ [ 1 , 2 ] , [ 3 , 4 ] ]
121
+ } ;
122
+
123
+ supplyDefaults ( traceIn , traceOut , defaultColor , layout ) ;
124
+ expect ( traceOut . xgap ) . toBe ( undefined ) ;
125
+ expect ( traceOut . ygap ) . toBe ( undefined ) ;
126
+ } ) ;
127
+
92
128
} ) ;
93
129
94
130
describe ( 'heatmap convertColumnXYZ' , function ( ) {
@@ -381,7 +417,80 @@ describe('heatmap plot', function() {
381
417
382
418
done ( ) ;
383
419
} ) ;
420
+ } ) ;
421
+
422
+ it ( 'draws canvas with correct margins' , function ( done ) {
423
+ var mockWithPadding = require ( '@mocks/heatmap_brick_padding.json' ) ,
424
+ mockWithoutPadding = Lib . extendDeep ( { } , mockWithPadding ) ,
425
+ gd = createGraphDiv ( ) ,
426
+ getContextStub = {
427
+ fillRect : jasmine . createSpy ( )
428
+ } ,
429
+ originalCreateElement = document . createElement ;
430
+
431
+ mockWithoutPadding . data [ 0 ] . xgap = 0 ;
432
+ mockWithoutPadding . data [ 0 ] . ygap = 0 ;
433
+
434
+ spyOn ( document , 'createElement' ) . and . callFake ( function ( elementType ) {
435
+ var element = originalCreateElement . call ( document , elementType ) ;
436
+ if ( elementType === 'canvas' ) {
437
+ spyOn ( element , 'getContext' ) . and . returnValue ( getContextStub ) ;
438
+ }
439
+ return element ;
440
+ } ) ;
384
441
442
+ var argumentsWithoutPadding = [ ] ,
443
+ argumentsWithPadding = [ ] ;
444
+ Plotly . plot ( gd , mockWithoutPadding . data , mockWithoutPadding . layout ) . then ( function ( ) {
445
+ argumentsWithoutPadding = getContextStub . fillRect . calls . allArgs ( ) . slice ( 0 ) ;
446
+ return Plotly . plot ( gd , mockWithPadding . data , mockWithPadding . layout ) ;
447
+ } ) . then ( function ( ) {
448
+ var centerXGap = mockWithPadding . data [ 0 ] . xgap / 3 ;
449
+ var centerYGap = mockWithPadding . data [ 0 ] . ygap / 3 ;
450
+ var edgeXGap = mockWithPadding . data [ 0 ] . xgap * 2 / 3 ;
451
+ var edgeYGap = mockWithPadding . data [ 0 ] . ygap * 2 / 3 ;
452
+
453
+ argumentsWithPadding = getContextStub . fillRect . calls . allArgs ( ) . slice ( getContextStub . fillRect . calls . allArgs ( ) . length - 9 ) ;
454
+ expect ( argumentsWithPadding ) . toEqual ( [
455
+ [ argumentsWithoutPadding [ 0 ] [ 0 ] ,
456
+ argumentsWithoutPadding [ 0 ] [ 1 ] + edgeYGap ,
457
+ argumentsWithoutPadding [ 0 ] [ 2 ] - edgeXGap ,
458
+ argumentsWithoutPadding [ 0 ] [ 3 ] - edgeYGap ] ,
459
+ [ argumentsWithoutPadding [ 1 ] [ 0 ] + centerXGap ,
460
+ argumentsWithoutPadding [ 1 ] [ 1 ] + edgeYGap ,
461
+ argumentsWithoutPadding [ 1 ] [ 2 ] - edgeXGap ,
462
+ argumentsWithoutPadding [ 1 ] [ 3 ] - edgeYGap ] ,
463
+ [ argumentsWithoutPadding [ 2 ] [ 0 ] + edgeXGap ,
464
+ argumentsWithoutPadding [ 2 ] [ 1 ] + edgeYGap ,
465
+ argumentsWithoutPadding [ 2 ] [ 2 ] - edgeXGap ,
466
+ argumentsWithoutPadding [ 2 ] [ 3 ] - edgeYGap ] ,
467
+ [ argumentsWithoutPadding [ 3 ] [ 0 ] ,
468
+ argumentsWithoutPadding [ 3 ] [ 1 ] + centerYGap ,
469
+ argumentsWithoutPadding [ 3 ] [ 2 ] - edgeXGap ,
470
+ argumentsWithoutPadding [ 3 ] [ 3 ] - edgeYGap ] ,
471
+ [ argumentsWithoutPadding [ 4 ] [ 0 ] + centerXGap ,
472
+ argumentsWithoutPadding [ 4 ] [ 1 ] + centerYGap ,
473
+ argumentsWithoutPadding [ 4 ] [ 2 ] - edgeXGap ,
474
+ argumentsWithoutPadding [ 4 ] [ 3 ] - edgeYGap ] ,
475
+ [ argumentsWithoutPadding [ 5 ] [ 0 ] + edgeXGap ,
476
+ argumentsWithoutPadding [ 5 ] [ 1 ] + centerYGap ,
477
+ argumentsWithoutPadding [ 5 ] [ 2 ] - edgeXGap ,
478
+ argumentsWithoutPadding [ 5 ] [ 3 ] - edgeYGap ] ,
479
+ [ argumentsWithoutPadding [ 6 ] [ 0 ] ,
480
+ argumentsWithoutPadding [ 6 ] [ 1 ] ,
481
+ argumentsWithoutPadding [ 6 ] [ 2 ] - edgeXGap ,
482
+ argumentsWithoutPadding [ 6 ] [ 3 ] - edgeYGap ] ,
483
+ [ argumentsWithoutPadding [ 7 ] [ 0 ] + centerXGap ,
484
+ argumentsWithoutPadding [ 7 ] [ 1 ] ,
485
+ argumentsWithoutPadding [ 7 ] [ 2 ] - edgeXGap ,
486
+ argumentsWithoutPadding [ 7 ] [ 3 ] - edgeYGap ] ,
487
+ [ argumentsWithoutPadding [ 8 ] [ 0 ] + edgeXGap ,
488
+ argumentsWithoutPadding [ 8 ] [ 1 ] ,
489
+ argumentsWithoutPadding [ 8 ] [ 2 ] - edgeXGap ,
490
+ argumentsWithoutPadding [ 8 ] [ 3 ] - edgeYGap
491
+ ] ] ) ;
492
+ done ( ) ;
493
+ } ) ;
385
494
} ) ;
386
495
} ) ;
387
496
0 commit comments