@@ -833,3 +833,103 @@ describe('@gl Test gl2d plots', function() {
833
833
. then ( done ) ;
834
834
} ) ;
835
835
} ) ;
836
+
837
+ describe ( 'Test scattergl autorange:' , function ( ) {
838
+ afterEach ( destroyGraphDiv ) ;
839
+
840
+ describe ( 'should return the same value as SVG scatter for ~small~ data' , function ( ) {
841
+ var specs = [
842
+ { name : 'lines+markers' , fig : require ( '@mocks/gl2d_10.json' ) } ,
843
+ { name : 'bubbles' , fig : require ( '@mocks/gl2d_12.json' ) } ,
844
+ { name : 'line on log axes' , fig : require ( '@mocks/gl2d_14.json' ) } ,
845
+ { name : 'fill to zero' , fig : require ( '@mocks/gl2d_axes_labels2.json' ) } ,
846
+ { name : 'annotations' , fig : require ( '@mocks/gl2d_annotations.json' ) }
847
+ ] ;
848
+
849
+ specs . forEach ( function ( s ) {
850
+ it ( '- case ' + s . name , function ( done ) {
851
+ var gd = createGraphDiv ( ) ;
852
+ var glRangeX ;
853
+ var glRangeY ;
854
+
855
+ // ensure the mocks have auto-range turned on
856
+ var glFig = Lib . extendDeep ( { } , s . fig ) ;
857
+ Lib . extendDeep ( glFig . layout , { xaxis : { autorange : true } } ) ;
858
+ Lib . extendDeep ( glFig . layout , { yaxis : { autorange : true } } ) ;
859
+
860
+ var svgFig = Lib . extendDeep ( { } , glFig ) ;
861
+ svgFig . data . forEach ( function ( t ) { t . type = 'scatter' ; } ) ;
862
+
863
+ Plotly . newPlot ( gd , glFig ) . then ( function ( ) {
864
+ glRangeX = gd . _fullLayout . xaxis . range ;
865
+ glRangeY = gd . _fullLayout . yaxis . range ;
866
+ } )
867
+ . then ( function ( ) {
868
+ return Plotly . newPlot ( gd , svgFig ) ;
869
+ } )
870
+ . then ( function ( ) {
871
+ expect ( gd . _fullLayout . xaxis . range ) . toBeCloseToArray ( glRangeX , 'x range' ) ;
872
+ expect ( gd . _fullLayout . yaxis . range ) . toBeCloseToArray ( glRangeY , 'y range' ) ;
873
+ } )
874
+ . catch ( fail )
875
+ . then ( done ) ;
876
+ } ) ;
877
+ } ) ;
878
+ } ) ;
879
+
880
+ describe ( 'should return the approximative values for ~big~ data' , function ( ) {
881
+ beforeEach ( function ( ) {
882
+ spyOn ( ScatterGl , 'plot' ) ;
883
+ } ) ;
884
+
885
+ // threshold for 'fast' axis expansion routine
886
+ var N = 1e5 ;
887
+ var x = new Array ( N ) ;
888
+ var y = new Array ( N ) ;
889
+ var ms = new Array ( N ) ;
890
+
891
+ Lib . seedPseudoRandom ( ) ;
892
+
893
+ for ( var i = 0 ; i < N ; i ++ ) {
894
+ x [ i ] = Lib . pseudoRandom ( ) ;
895
+ y [ i ] = Lib . pseudoRandom ( ) ;
896
+ ms [ i ] = 10 * Lib . pseudoRandom ( ) + 20 ;
897
+ }
898
+
899
+ it ( '- case scalar marker.size' , function ( done ) {
900
+ var gd = createGraphDiv ( ) ;
901
+
902
+ Plotly . newPlot ( gd , [ {
903
+ type : 'scattergl' ,
904
+ mode : 'markers' ,
905
+ x : x ,
906
+ y : y ,
907
+ marker : { size : 10 }
908
+ } ] )
909
+ . then ( function ( ) {
910
+ expect ( gd . _fullLayout . xaxis . range ) . toBeCloseToArray ( [ - 0.02 , 1.02 ] , 'x range' ) ;
911
+ expect ( gd . _fullLayout . yaxis . range ) . toBeCloseToArray ( [ - 0.04 , 1.04 ] , 'y range' ) ;
912
+ } )
913
+ . catch ( fail )
914
+ . then ( done ) ;
915
+ } ) ;
916
+
917
+ it ( '- case array marker.size' , function ( done ) {
918
+ var gd = createGraphDiv ( ) ;
919
+
920
+ Plotly . newPlot ( gd , [ {
921
+ type : 'scattergl' ,
922
+ mode : 'markers' ,
923
+ x : x ,
924
+ y : y ,
925
+ marker : { size : ms }
926
+ } ] )
927
+ . then ( function ( ) {
928
+ expect ( gd . _fullLayout . xaxis . range ) . toBeCloseToArray ( [ - 0.05 , 1.05 ] , 'x range' ) ;
929
+ expect ( gd . _fullLayout . yaxis . range ) . toBeCloseToArray ( [ - 0.11 , 1.11 ] , 'y range' ) ;
930
+ } )
931
+ . catch ( fail )
932
+ . then ( done ) ;
933
+ } ) ;
934
+ } ) ;
935
+ } ) ;
0 commit comments