Skip to content

Commit 9bbf55b

Browse files
committed
assert gd.data[i].selectedpoints in per-trace-type select tests
1 parent 6437081 commit 9bbf55b

File tree

1 file changed

+132
-7
lines changed

1 file changed

+132
-7
lines changed

test/jasmine/tests/select_test.js

Lines changed: 132 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,27 @@ describe('Test select box and lasso per trace:', function() {
566566
};
567567
}
568568

569+
function makeAssertSelectedPoints() {
570+
var callNumber = 0;
571+
572+
return function(expected) {
573+
var msg = '(call #' + callNumber + ') ';
574+
575+
gd.data.forEach(function(trace, i) {
576+
var msgFull = msg + 'selectedpoints array for trace ' + i;
577+
var actual = trace.selectedpoints;
578+
579+
if(expected[i]) {
580+
expect(actual).toBeCloseToArray(expected[i], 1, msgFull);
581+
} else {
582+
expect(actual).toBe(undefined, 1, msgFull);
583+
}
584+
});
585+
586+
callNumber++;
587+
};
588+
}
589+
569590
function makeAssertRanges(subplot, tol) {
570591
tol = tol || 1;
571592
var callNumber = 0;
@@ -636,6 +657,7 @@ describe('Test select box and lasso per trace:', function() {
636657

637658
it('should work on scatterternary traces', function(done) {
638659
var assertPoints = makeAssertPoints(['a', 'b', 'c']);
660+
var assertSelectedPoints = makeAssertSelectedPoints();
639661

640662
var fig = Lib.extendDeep({}, require('@mocks/ternary_simple'));
641663
fig.layout.width = 800;
@@ -647,6 +669,7 @@ describe('Test select box and lasso per trace:', function() {
647669
[[400, 200], [445, 235]],
648670
function() {
649671
assertPoints([[0.5, 0.25, 0.25]]);
672+
assertSelectedPoints({0: [0]});
650673
},
651674
[380, 180],
652675
BOXEVENTS, 'scatterternary select'
@@ -658,7 +681,10 @@ describe('Test select box and lasso per trace:', function() {
658681
.then(function() {
659682
return _run(
660683
[[400, 200], [445, 200], [445, 235], [400, 235], [400, 200]],
661-
function() { assertPoints([[0.5, 0.25, 0.25]]); },
684+
function() {
685+
assertPoints([[0.5, 0.25, 0.25]]);
686+
assertSelectedPoints({0: [0]});
687+
},
662688
[380, 180],
663689
LASSOEVENTS, 'scatterternary lasso'
664690
);
@@ -670,7 +696,10 @@ describe('Test select box and lasso per trace:', function() {
670696
.then(function() {
671697
return _run(
672698
[[200, 200], [230, 200], [230, 230], [200, 230], [200, 200]],
673-
function() { assertPoints([[0.5, 0.25, 0.25]]); },
699+
function() {
700+
assertPoints([[0.5, 0.25, 0.25]]);
701+
assertSelectedPoints({0: [0]});
702+
},
674703
[180, 180],
675704
LASSOEVENTS, 'scatterternary lasso after relayout'
676705
);
@@ -681,6 +710,7 @@ describe('Test select box and lasso per trace:', function() {
681710

682711
it('should work on scattercarpet traces', function(done) {
683712
var assertPoints = makeAssertPoints(['a', 'b']);
713+
var assertSelectedPoints = makeAssertSelectedPoints();
684714

685715
var fig = Lib.extendDeep({}, require('@mocks/scattercarpet'));
686716
fig.layout.dragmode = 'select';
@@ -689,7 +719,10 @@ describe('Test select box and lasso per trace:', function() {
689719
Plotly.plot(gd, fig).then(function() {
690720
return _run(
691721
[[300, 200], [400, 250]],
692-
function() { assertPoints([[0.2, 1.5]]); },
722+
function() {
723+
assertPoints([[0.2, 1.5]]);
724+
assertSelectedPoints({1: [], 2: [], 3: [], 4: [], 5: [1], 6: []});
725+
},
693726
null, BOXEVENTS, 'scattercarpet select'
694727
);
695728
})
@@ -699,7 +732,10 @@ describe('Test select box and lasso per trace:', function() {
699732
.then(function() {
700733
return _run(
701734
[[300, 200], [400, 200], [400, 250], [300, 250], [300, 200]],
702-
function() { assertPoints([[0.2, 1.5]]); },
735+
function() {
736+
assertPoints([[0.2, 1.5]]);
737+
assertSelectedPoints({1: [], 2: [], 3: [], 4: [], 5: [1], 6: []});
738+
},
703739
null, LASSOEVENTS, 'scattercarpet lasso'
704740
);
705741
})
@@ -711,6 +747,7 @@ describe('Test select box and lasso per trace:', function() {
711747
var assertPoints = makeAssertPoints(['lon', 'lat']);
712748
var assertRanges = makeAssertRanges('mapbox');
713749
var assertLassoPoints = makeAssertLassoPoints('mapbox');
750+
var assertSelectedPoints = makeAssertSelectedPoints();
714751

715752
var fig = Lib.extendDeep({}, require('@mocks/mapbox_bubbles-text'));
716753
fig.layout.dragmode = 'select';
@@ -725,6 +762,7 @@ describe('Test select box and lasso per trace:', function() {
725762
function() {
726763
assertPoints([[30, 30]]);
727764
assertRanges([[21.99, 34.55], [38.14, 25.98]]);
765+
assertSelectedPoints({0: [2]});
728766
},
729767
null, BOXEVENTS, 'scattermapbox select'
730768
);
@@ -737,6 +775,7 @@ describe('Test select box and lasso per trace:', function() {
737775
[[300, 200], [300, 300], [400, 300], [400, 200], [300, 200]],
738776
function() {
739777
assertPoints([[20, 20]]);
778+
assertSelectedPoints({0: [1]});
740779
assertLassoPoints([
741780
[13.28, 25.97], [13.28, 14.33], [25.71, 14.33], [25.71, 25.97], [13.28, 25.97]
742781
]);
@@ -759,8 +798,10 @@ describe('Test select box and lasso per trace:', function() {
759798

760799
it('should work on scattergeo traces', function(done) {
761800
var assertPoints = makeAssertPoints(['lon', 'lat']);
801+
var assertSelectedPoints = makeAssertSelectedPoints();
762802
var assertRanges = makeAssertRanges('geo');
763803
var assertLassoPoints = makeAssertLassoPoints('geo');
804+
764805
var fig = {
765806
data: [{
766807
type: 'scattergeo',
@@ -786,6 +827,7 @@ describe('Test select box and lasso per trace:', function() {
786827
[[350, 200], [450, 400]],
787828
function() {
788829
assertPoints([[10, 10], [20, 20], [-10, 10], [-20, 20]]);
830+
assertSelectedPoints({0: [0, 1], 1: [0, 1]});
789831
assertRanges([[-28.13, 61.88], [28.13, -50.64]]);
790832
},
791833
null, BOXEVENTS, 'scattergeo select'
@@ -799,17 +841,15 @@ describe('Test select box and lasso per trace:', function() {
799841
[[300, 200], [300, 300], [400, 300], [400, 200], [300, 200]],
800842
function() {
801843
assertPoints([[-10, 10], [-20, 20], [-30, 30]]);
844+
assertSelectedPoints({0: [], 1: [0, 1, 2]});
802845
assertLassoPoints([
803846
[-56.25, 61.88], [-56.24, 5.63], [0, 5.63], [0, 61.88], [-56.25, 61.88]
804847
]);
805848
},
806849
null, LASSOEVENTS, 'scattergeo lasso'
807850
);
808851
})
809-
// .then(deselectPromise)
810852
.then(function() {
811-
// assertEventCounts(4, 2, 1, 'de-lasso');
812-
813853
// make sure selection handlers don't get called in 'pan' dragmode
814854
return Plotly.relayout(gd, 'dragmode', 'pan');
815855
})
@@ -824,6 +864,7 @@ describe('Test select box and lasso per trace:', function() {
824864

825865
it('should work on choropleth traces', function(done) {
826866
var assertPoints = makeAssertPoints(['location', 'z']);
867+
var assertSelectedPoints = makeAssertSelectedPoints();
827868
var assertRanges = makeAssertRanges('geo', -0.5);
828869
var assertLassoPoints = makeAssertLassoPoints('geo', -0.5);
829870

@@ -847,6 +888,7 @@ describe('Test select box and lasso per trace:', function() {
847888
[[350, 200], [400, 250]],
848889
function() {
849890
assertPoints([['GBR', 26.507354205352502], ['IRL', 86.4125147625692]]);
891+
assertSelectedPoints({0: [54, 68]});
850892
assertRanges([[-19.11, 63.06], [7.31, 53.72]]);
851893
},
852894
[280, 190],
@@ -861,6 +903,7 @@ describe('Test select box and lasso per trace:', function() {
861903
[[350, 200], [400, 200], [400, 250], [350, 250], [350, 200]],
862904
function() {
863905
assertPoints([['GBR', 26.507354205352502], ['IRL', 86.4125147625692]]);
906+
assertSelectedPoints({0: [54, 68]});
864907
assertLassoPoints([
865908
[-19.11, 63.06], [5.50, 65.25], [7.31, 53.72], [-12.90, 51.70], [-19.11, 63.06]
866909
]);
@@ -884,6 +927,7 @@ describe('Test select box and lasso per trace:', function() {
884927

885928
it('should work for bar traces', function(done) {
886929
var assertPoints = makeAssertPoints(['curveNumber', 'x', 'y']);
930+
var assertSelectedPoints = makeAssertSelectedPoints();
887931
var assertRanges = makeAssertRanges();
888932
var assertLassoPoints = makeAssertLassoPoints();
889933

@@ -905,6 +949,11 @@ describe('Test select box and lasso per trace:', function() {
905949
[2, 4.9, 0.473], [2, 5, 0.368], [2, 5.1, 0.258],
906950
[2, 5.2, 0.146], [2, 5.3, 0.036]
907951
]);
952+
assertSelectedPoints({
953+
0: [49, 50, 51, 52, 53, 54, 55, 56, 57],
954+
1: [51, 52, 53, 54, 55, 56],
955+
2: [49, 50, 51, 52, 53]
956+
});
908957
assertLassoPoints([
909958
[4.87, 5.74, 5.74, 4.87, 4.87],
910959
[0.53, 0.53, -0.02, -0.02, 0.53]
@@ -935,6 +984,11 @@ describe('Test select box and lasso per trace:', function() {
935984
[1, 5.1, 0.485], [1, 5.2, 0.41],
936985
[2, 4.9, 0.473], [2, 5, 0.37]
937986
]);
987+
assertSelectedPoints({
988+
0: [49, 50, 51, 52],
989+
1: [51, 52],
990+
2: [49, 50]
991+
});
938992
assertRanges([[4.87, 5.22], [0.31, 0.53]]);
939993
},
940994
null, BOXEVENTS, 'bar select'
@@ -946,6 +1000,7 @@ describe('Test select box and lasso per trace:', function() {
9461000

9471001
it('should work for date/category traces', function(done) {
9481002
var assertPoints = makeAssertPoints(['curveNumber', 'x', 'y']);
1003+
var assertSelectedPoints = makeAssertSelectedPoints();
9491004

9501005
var fig = {
9511006
data: [{
@@ -978,6 +1033,7 @@ describe('Test select box and lasso per trace:', function() {
9781033
[0, '2017-02-01', 'b'],
9791034
[1, '2017-02-02', 'b']
9801035
]);
1036+
assertSelectedPoints({0: [1], 1: [1]});
9811037
},
9821038
null, LASSOEVENTS, 'date/category lasso'
9831039
);
@@ -993,6 +1049,7 @@ describe('Test select box and lasso per trace:', function() {
9931049
[0, '2017-02-01', 'b'],
9941050
[1, '2017-02-02', 'b']
9951051
]);
1052+
assertSelectedPoints({0: [1], 1: [1]});
9961053
},
9971054
null, BOXEVENTS, 'date/category select'
9981055
);
@@ -1003,6 +1060,7 @@ describe('Test select box and lasso per trace:', function() {
10031060

10041061
it('should work for histogram traces', function(done) {
10051062
var assertPoints = makeAssertPoints(['curveNumber', 'x', 'y', 'pointIndices']);
1063+
var assertSelectedPoints = makeAssertSelectedPoints();
10061064
var assertRanges = makeAssertRanges();
10071065
var assertLassoPoints = makeAssertLassoPoints();
10081066

@@ -1020,6 +1078,7 @@ describe('Test select box and lasso per trace:', function() {
10201078
assertPoints([
10211079
[0, 1.8, 2, [3, 4]], [1, 2.2, 1, [1]], [1, 3.2, 1, [2]]
10221080
]);
1081+
assertSelectedPoints({0: [3, 4], 1: [1, 2]});
10231082
assertLassoPoints([
10241083
[1.66, 3.59, 3.59, 1.66, 1.66],
10251084
[2.17, 2.17, 0.69, 0.69, 2.17]
@@ -1038,6 +1097,7 @@ describe('Test select box and lasso per trace:', function() {
10381097
assertPoints([
10391098
[0, 1.8, 2, [3, 4]], [1, 2.2, 1, [1]], [1, 3.2, 1, [2]]
10401099
]);
1100+
assertSelectedPoints({0: [3, 4], 1: [1, 2]});
10411101
assertRanges([[1.66, 3.59], [0.69, 2.17]]);
10421102
},
10431103
null, BOXEVENTS, 'histogram select'
@@ -1049,6 +1109,7 @@ describe('Test select box and lasso per trace:', function() {
10491109

10501110
it('should work for box traces', function(done) {
10511111
var assertPoints = makeAssertPoints(['curveNumber', 'y', 'x']);
1112+
var assertSelectedPoints = makeAssertSelectedPoints();
10521113
var assertRanges = makeAssertRanges();
10531114
var assertLassoPoints = makeAssertLassoPoints();
10541115

@@ -1071,6 +1132,11 @@ describe('Test select box and lasso per trace:', function() {
10711132
[1, 0.2, 'day 2'], [1, 0.5, 'day 2'], [1, 0.7, 'day 2'], [1, 0.7, 'day 2'],
10721133
[2, 0.3, 'day 1'], [2, 0.6, 'day 1'], [2, 0.6, 'day 1']
10731134
]);
1135+
assertSelectedPoints({
1136+
0: [6, 11, 10, 7],
1137+
1: [11, 8, 6, 10],
1138+
2: [1, 4, 5]
1139+
});
10741140
assertLassoPoints([
10751141
['day 1', 'day 2', 'day 2', 'day 1', 'day 1'],
10761142
[0.71, 0.71, 0.1875, 0.1875, 0.71]
@@ -1091,6 +1157,11 @@ describe('Test select box and lasso per trace:', function() {
10911157
[1, 0.2, 'day 2'], [1, 0.5, 'day 2'], [1, 0.7, 'day 2'], [1, 0.7, 'day 2'],
10921158
[2, 0.3, 'day 1'], [2, 0.6, 'day 1'], [2, 0.6, 'day 1']
10931159
]);
1160+
assertSelectedPoints({
1161+
0: [6, 11, 10, 7],
1162+
1: [11, 8, 6, 10],
1163+
2: [1, 4, 5]
1164+
});
10941165
assertRanges([['day 1', 'day 2'], [0.1875, 0.71]]);
10951166
},
10961167
null, BOXEVENTS, 'box select'
@@ -1102,6 +1173,7 @@ describe('Test select box and lasso per trace:', function() {
11021173

11031174
it('should work for violin traces', function(done) {
11041175
var assertPoints = makeAssertPoints(['curveNumber', 'y', 'x']);
1176+
var assertSelectedPoints = makeAssertSelectedPoints();
11051177
var assertRanges = makeAssertRanges();
11061178
var assertLassoPoints = makeAssertLassoPoints();
11071179

@@ -1122,6 +1194,11 @@ describe('Test select box and lasso per trace:', function() {
11221194
[1, 0.9, 'day 2'],
11231195
[2, 0.3, 'day 1'], [2, 0.6, 'day 1'], [2, 0.6, 'day 1'], [2, 0.9, 'day 1']
11241196
]);
1197+
assertSelectedPoints({
1198+
0: [11, 10, 7, 8],
1199+
1: [8, 6, 10, 9, 7],
1200+
2: [1, 4, 5, 3]
1201+
});
11251202
assertLassoPoints([
11261203
['day 1', 'day 2', 'day 2', 'day 1', 'day 1'],
11271204
[1.02, 1.02, 0.27, 0.27, 1.02]
@@ -1143,6 +1220,11 @@ describe('Test select box and lasso per trace:', function() {
11431220
[1, 0.9, 'day 2'],
11441221
[2, 0.3, 'day 1'], [2, 0.6, 'day 1'], [2, 0.6, 'day 1'], [2, 0.9, 'day 1']
11451222
]);
1223+
assertSelectedPoints({
1224+
0: [11, 10, 7, 8],
1225+
1: [8, 6, 10, 9, 7],
1226+
2: [1, 4, 5, 3]
1227+
});
11461228
assertRanges([['day 1', 'day 2'], [0.27, 1.02]]);
11471229
},
11481230
null, BOXEVENTS, 'violin select'
@@ -1151,6 +1233,49 @@ describe('Test select box and lasso per trace:', function() {
11511233
.catch(fail)
11521234
.then(done);
11531235
});
1236+
1237+
it('should work on traces with enabled transforms', function(done) {
1238+
var assertSelectedPoints = makeAssertSelectedPoints();
1239+
1240+
Plotly.plot(gd, [{
1241+
x: [1, 2, 3, 4, 5],
1242+
y: [2, 3, 1, 7, 9],
1243+
marker: {size: [10, 20, 20, 20, 10]},
1244+
transforms: [{
1245+
type: 'filter',
1246+
operation: '>',
1247+
value: 2,
1248+
target: 'y'
1249+
}, {
1250+
type: 'aggregate',
1251+
groups: 'marker.size',
1252+
aggregations: [
1253+
// 20: 6, 10: 5
1254+
{target: 'x', func: 'sum'},
1255+
// 20: 5, 10: 9
1256+
{target: 'y', func: 'avg'}
1257+
]
1258+
}]
1259+
}], {
1260+
dragmode: 'select',
1261+
showlegend: false,
1262+
width: 400,
1263+
height: 400,
1264+
margin: {l: 0, t: 0, r: 0, b: 0}
1265+
})
1266+
.then(function() {
1267+
return _run(
1268+
[[5, 5], [395, 395]],
1269+
function() {
1270+
assertSelectedPoints({0: [1, 3, 4]});
1271+
},
1272+
[380, 180],
1273+
BOXEVENTS, 'transformed trace select (all points selected)'
1274+
);
1275+
})
1276+
.catch(fail)
1277+
.then(done);
1278+
});
11541279
});
11551280

11561281
// to make sure none of the above tests fail with extraneous invisible traces,

0 commit comments

Comments
 (0)