@@ -74,6 +74,48 @@ describe('dc.scatterPlot', function () {
74
74
} ) ;
75
75
} ) ;
76
76
77
+ function fishSymbol ( ) {
78
+ var size ;
79
+ var points = [ [ 2 , 0 ] , [ 1 , - 1 ] , [ - 1 , 1 ] , [ - 1 , - 1 ] , [ 1 , 1 ] ] ;
80
+ function symbol ( d , i ) {
81
+ // native size is 3 square pixels, so to get size N, multiply by sqrt(N)/3
82
+ var m = size . call ( this , d , i ) ;
83
+ m = Math . sqrt ( m ) / 3 ;
84
+ var path = d3 . svg . line ( )
85
+ . x ( function ( d ) {
86
+ return d [ 0 ] * m ;
87
+ } )
88
+ . y ( function ( d ) {
89
+ return d [ 1 ] * m ;
90
+ } ) ;
91
+ return path ( points ) + 'Z' ;
92
+ }
93
+ symbol . type = function ( ) {
94
+ if ( arguments . length ) {
95
+ throw new Error ( 'no, you must have fish' ) ;
96
+ }
97
+ return 'fish' ;
98
+ } ;
99
+ symbol . size = function ( _ ) {
100
+ if ( ! arguments . length ) {
101
+ return size ;
102
+ }
103
+ size = d3 . functor ( _ ) ;
104
+ return symbol ;
105
+ } ;
106
+ return symbol ;
107
+ }
108
+ describe ( 'with a fish symbol' , function ( ) {
109
+ beforeEach ( function ( ) {
110
+ chart . customSymbol ( fishSymbol ( ) . size ( chart . symbolSize ( ) ) )
111
+ . render ( ) ;
112
+ } ) ;
113
+
114
+ it ( 'should draw fishes' , function ( ) {
115
+ expect ( symbolsMatching ( matchSymbol ( fishSymbol ( ) , chart . symbolSize ( ) ) ) . length ) . toBe ( 9 ) ;
116
+ } ) ;
117
+ } ) ;
118
+
77
119
describe ( 'with title rendering disabled' , function ( ) {
78
120
beforeEach ( function ( ) {
79
121
chart . renderTitle ( false ) . render ( ) ;
@@ -303,6 +345,16 @@ describe('dc.scatterPlot', function () {
303
345
} ;
304
346
}
305
347
348
+ function matchSymbol ( s , r ) {
349
+ return function ( ) {
350
+ var symbol = d3 . select ( this ) ;
351
+ var size = Math . pow ( r , 2 ) ;
352
+ var path = s . size ( size ) ( ) ;
353
+ var result = comparePaths ( symbol . attr ( 'd' ) , path ) ;
354
+ return result . pass ;
355
+ } ;
356
+ }
357
+
306
358
function symbolsMatching ( pred ) {
307
359
function getData ( symbols ) {
308
360
return symbols [ 0 ] . map ( function ( symbol ) {
0 commit comments