@@ -337,6 +337,104 @@ describe('filter transforms calc:', function() {
337
337
expect ( out [ 0 ] . marker . color ) . toEqual ( [ undefined , undefined , undefined , undefined , 0.2 , 0.3 , 0.4 ] ) ;
338
338
} ) ;
339
339
340
+ it ( 'two filter transforms with `preservegaps: true` should commute' , function ( ) {
341
+ var transform0 = {
342
+ type : 'filter' ,
343
+ preservegaps : true ,
344
+ operation : '>' ,
345
+ value : - 1 ,
346
+ target : 'x'
347
+ } ;
348
+
349
+ var transform1 = {
350
+ type : 'filter' ,
351
+ preservegaps : true ,
352
+ operation : '<' ,
353
+ value : 2 ,
354
+ target : 'x'
355
+ } ;
356
+
357
+ var out0 = _transform ( [ Lib . extendDeep ( { } , base , {
358
+ transforms : [ transform0 , transform1 ]
359
+ } ) ] ) ;
360
+
361
+ var out1 = _transform ( [ Lib . extendDeep ( { } , base , {
362
+ transforms : [ transform1 , transform0 ]
363
+ } ) ] ) ;
364
+
365
+ [ 'x' , 'y' , 'ids' , 'marker.color' , 'marker.size' ] . forEach ( function ( k ) {
366
+ var v0 = Lib . nestedProperty ( out0 [ 0 ] , k ) . get ( ) ;
367
+ var v1 = Lib . nestedProperty ( out1 [ 0 ] , k ) . get ( ) ;
368
+ expect ( v0 ) . toEqual ( v1 ) ;
369
+ } ) ;
370
+ } ) ;
371
+
372
+ it ( 'two filter transforms with `preservegaps: false` should commute' , function ( ) {
373
+ var transform0 = {
374
+ type : 'filter' ,
375
+ preservegaps : false ,
376
+ operation : '>' ,
377
+ value : - 1 ,
378
+ target : 'x'
379
+ } ;
380
+
381
+ var transform1 = {
382
+ type : 'filter' ,
383
+ preservegaps : false ,
384
+ operation : '<' ,
385
+ value : 2 ,
386
+ target : 'x'
387
+ } ;
388
+
389
+ var out0 = _transform ( [ Lib . extendDeep ( { } , base , {
390
+ transforms : [ transform0 , transform1 ]
391
+ } ) ] ) ;
392
+
393
+ var out1 = _transform ( [ Lib . extendDeep ( { } , base , {
394
+ transforms : [ transform1 , transform0 ]
395
+ } ) ] ) ;
396
+
397
+ [ 'x' , 'y' , 'ids' , 'marker.color' , 'marker.size' ] . forEach ( function ( k ) {
398
+ var v0 = Lib . nestedProperty ( out0 [ 0 ] , k ) . get ( ) ;
399
+ var v1 = Lib . nestedProperty ( out1 [ 0 ] , k ) . get ( ) ;
400
+ expect ( v0 ) . toEqual ( v1 ) ;
401
+ } ) ;
402
+ } ) ;
403
+
404
+ it ( 'two filter transforms with different `preservegaps` values should not necessary commute' , function ( ) {
405
+ var transform0 = {
406
+ type : 'filter' ,
407
+ preservegaps : true ,
408
+ operation : '>' ,
409
+ value : - 1 ,
410
+ target : 'x'
411
+ } ;
412
+
413
+ var transform1 = {
414
+ type : 'filter' ,
415
+ preservegaps : false ,
416
+ operation : '<' ,
417
+ value : 2 ,
418
+ target : 'x'
419
+ } ;
420
+
421
+ var out0 = _transform ( [ Lib . extendDeep ( { } , base , {
422
+ transforms : [ transform0 , transform1 ]
423
+ } ) ] ) ;
424
+
425
+ expect ( out0 [ 0 ] . x ) . toEqual ( [ 0 , 1 ] ) ;
426
+ expect ( out0 [ 0 ] . y ) . toEqual ( [ 1 , 2 ] ) ;
427
+ expect ( out0 [ 0 ] . marker . color ) . toEqual ( [ 0.1 , 0.2 ] ) ;
428
+
429
+ var out1 = _transform ( [ Lib . extendDeep ( { } , base , {
430
+ transforms : [ transform1 , transform0 ]
431
+ } ) ] ) ;
432
+
433
+ expect ( out1 [ 0 ] . x ) . toEqual ( [ undefined , undefined , undefined , 0 , 1 ] ) ;
434
+ expect ( out1 [ 0 ] . y ) . toEqual ( [ undefined , undefined , undefined , 1 , 2 ] ) ;
435
+ expect ( out1 [ 0 ] . marker . color ) . toEqual ( [ undefined , undefined , undefined , 0.1 , 0.2 ] ) ;
436
+ } ) ;
437
+
340
438
describe ( 'filters should handle numeric values' , function ( ) {
341
439
var _base = Lib . extendDeep ( { } , base ) ;
342
440
0 commit comments