Skip to content

Commit 55f9e0c

Browse files
committed
symmetry / degeneracy test cases (manually cherrypicked)
1 parent b23d2ff commit 55f9e0c

File tree

1 file changed

+169
-0
lines changed

1 file changed

+169
-0
lines changed

test/jasmine/tests/transform_groupby_test.js

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,173 @@ describe('groupby', function() {
182182

183183
});
184184

185+
// these tests can be shortened, once the meaning of edge cases gets clarified
186+
describe('symmetry/degeneracy testing of one-to-many transforms on arbitrary arrays where there is no grouping (implicit 1):', function() {
187+
'use strict';
188+
189+
var mockData = [{
190+
mode: 'markers',
191+
x: [1, -1, -2, 0, 1, 2, 3],
192+
y: [1, 2, 3, 1, 2, 3, 1],
193+
194+
// everything is present:
195+
transforms: [{
196+
type: 'groupby',
197+
groups: ['a', 'a', 'b', 'a', 'b', 'b', 'a'],
198+
style: { a: {marker: {color: 'red'}}, b: {marker: {color: 'blue'}} }
199+
}]
200+
}];
201+
202+
var mockData0 = [{
203+
mode: 'markers',
204+
x: [1, -1, -2, 0, 1, 2, 3],
205+
y: [1, 2, 3, 1, 2, 3, 1],
206+
207+
// groups, styles not present
208+
transforms: [{
209+
type: 'groupby'
210+
// groups not present
211+
// styles not present
212+
}]
213+
}];
214+
215+
// transform attribute with empty list
216+
var mockData1 = [{
217+
mode: 'markers',
218+
x: [1, -1, -2, 0, 1, 2, 3],
219+
y: [1, 2, 3, 1, 2, 3, 1],
220+
221+
// transforms is present but there are no items in it
222+
transforms: [ /* list is empty */ ]
223+
}];
224+
225+
// transform attribute with null value
226+
var mockData2 = [{
227+
mode: 'markers',
228+
x: [1, -1, -2, 0, 1, 2, 3],
229+
y: [1, 2, 3, 1, 2, 3, 1],
230+
transforms: null
231+
}];
232+
233+
// no transform is present at all
234+
var mockData3 = [{
235+
mode: 'markers',
236+
x: [1, -1, -2, 0, 1, 2, 3],
237+
y: [1, 2, 3, 1, 2, 3, 1]
238+
}];
239+
240+
afterEach(destroyGraphDiv);
241+
242+
it('Plotly.plot should plot the transform traces', function(done) {
243+
var data = Lib.extendDeep([], mockData);
244+
245+
var gd = createGraphDiv();
246+
247+
Plotly.plot(gd, data).then(function() {
248+
expect(gd.data.length).toEqual(1);
249+
expect(gd.data[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
250+
expect(gd.data[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
251+
252+
expect(gd._fullData.length).toEqual(2); // two groups
253+
expect(gd._fullData[0].x).toEqual([1, -1, 0, 3]);
254+
expect(gd._fullData[0].y).toEqual([1, 2, 1, 1]);
255+
expect(gd._fullData[1].x).toEqual([-2, 1, 2]);
256+
expect(gd._fullData[1].y).toEqual([3, 2, 3]);
257+
258+
assertDims([4, 3]);
259+
260+
done();
261+
});
262+
});
263+
264+
// passes; maybe not for the good reasons (see fixme comments)
265+
it('Plotly.plot should plot the transform traces', function(done) {
266+
var data = Lib.extendDeep([], mockData0);
267+
268+
var gd = createGraphDiv();
269+
270+
Plotly.plot(gd, data).then(function() {
271+
expect(gd.data.length).toEqual(1);
272+
expect(gd.data[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
273+
expect(gd.data[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
274+
275+
expect(gd._fullData.length).toEqual(0); // fixme: it passes with 0; shouldn't it be 1? (one implied group)
276+
277+
/* since the array is of zero length, the below items are obv. meaningless to test
278+
expect(gd._fullData[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
279+
expect(gd._fullData[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
280+
*/
281+
282+
assertDims([]); // fixme: same thing, looks like zero dimensionality
283+
284+
done();
285+
});
286+
});
287+
288+
// passes; looks OK
289+
it('Plotly.plot should plot the transform traces', function(done) {
290+
var data = Lib.extendDeep([], mockData1);
291+
292+
var gd = createGraphDiv();
293+
294+
Plotly.plot(gd, data).then(function() {
295+
expect(gd.data.length).toEqual(1);
296+
expect(gd.data[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
297+
expect(gd.data[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
298+
299+
expect(gd._fullData.length).toEqual(1); // fixme not: good, okay it's 1 here (one implied group / thing)
300+
expect(gd._fullData[0].x).toEqual([ 1, -1, -2, 0, 1, 2, 3 ]);
301+
expect(gd._fullData[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
302+
303+
assertDims([7]);
304+
305+
done();
306+
});
307+
});
308+
309+
// passes OK; see todo comments
310+
it('Plotly.plot should plot the transform traces', function(done) {
311+
var data = Lib.extendDeep([], mockData2);
312+
313+
var gd = createGraphDiv();
314+
315+
Plotly.plot(gd, data).then(function() {
316+
expect(gd.data.length).toEqual(1);
317+
expect(gd.data[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
318+
expect(gd.data[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
319+
320+
expect(gd._fullData.length).toEqual(1); // todo: confirm this result is OK
321+
322+
expect(gd._fullData[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
323+
expect(gd._fullData[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
324+
325+
assertDims([7]); // todo: confirm this result is OK
326+
327+
done();
328+
});
329+
});
330+
331+
// passes OK; see todo comments
332+
it('Plotly.plot should plot the transform traces', function(done) {
333+
var data = Lib.extendDeep([], mockData3);
334+
335+
var gd = createGraphDiv();
336+
337+
Plotly.plot(gd, data).then(function() {
338+
expect(gd.data.length).toEqual(1);
339+
expect(gd.data[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
340+
expect(gd.data[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
341+
342+
expect(gd._fullData.length).toEqual(1); // todo: confirm this result is OK
343+
344+
expect(gd._fullData[0].x).toEqual([1, -1, -2, 0, 1, 2, 3]);
345+
expect(gd._fullData[0].y).toEqual([1, 2, 3, 1, 2, 3, 1]);
346+
347+
assertDims([7]); // todo: confirm this result is OK
348+
349+
done();
350+
});
351+
});
352+
});
353+
185354
});

0 commit comments

Comments
 (0)