From b5309ecd3a4304c5042d1c7b6409d082386c033e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Thu, 25 Feb 2016 11:39:58 -0500 Subject: [PATCH 1/5] Add test for connectgaps --- test/jasmine/tests/calcdata_test.js | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/jasmine/tests/calcdata_test.js diff --git a/test/jasmine/tests/calcdata_test.js b/test/jasmine/tests/calcdata_test.js new file mode 100644 index 00000000000..f51a9e53bc5 --- /dev/null +++ b/test/jasmine/tests/calcdata_test.js @@ -0,0 +1,31 @@ +var Plotly = require('@lib/index'); + +var createGraphDiv = require('../assets/create_graph_div'); +var destroyGraphDiv = require('../assets/destroy_graph_div'); + +fdescribe('calculated data and points', function() { + describe('connectGaps', function() { + + var gd; + + beforeEach(function() { + gd = createGraphDiv(); + }); + + afterEach(destroyGraphDiv); + + it('should exclude null and undefined points when false', function() { + Plotly.plot(gd, [{ x: [1,2,3,undefined,5], y: [1,null,3,4,5]}], {}); + + expect(gd.calcdata[0][1]).toEqual({ x: false, y: false}); + expect(gd.calcdata[0][3]).toEqual({ x: false, y: false}); + }); + + it('should exclude null and undefined points as categories when false', function() { + Plotly.plot(gd, [{ x: [1,2,3,undefined,5], y: [1,null,3,4,5] }], { xaxis: { type: 'category' }}); + + expect(gd.calcdata[0][1]).toEqual({ x: false, y: false}); + expect(gd.calcdata[0][3]).toEqual({ x: false, y: false}); + }); + }); +}); From f3b679f3585a8d7e8bd5c038af1e3c915c58a029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Thu, 25 Feb 2016 11:40:20 -0500 Subject: [PATCH 2/5] Add check for null or undefined points --- src/plots/cartesian/set_convert.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index a7d28d24655..c96459a1f73 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -184,10 +184,13 @@ module.exports = function setConvert(ax) { // that aren't in the first etc. // TODO: sorting options - do the sorting // progressively here as we insert? - if(ax._categories.indexOf(v)===-1) ax._categories.push(v); - var c = ax._categories.indexOf(v); - return c===-1 ? constants.BADNUM : c; + if(v !== null && v !== undefined && ax._categories.indexOf(v) === -1){ + ax._categories.push(v); + return ax._categories.length - 1; + }else{ + return constants.BADNUM; + } }; ax.d2l = ax.d2c; From 1c4a25dc995a923d94f77df62b81e337d82a2d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Thu, 25 Feb 2016 11:58:48 -0500 Subject: [PATCH 3/5] fdescribe -> describe --- test/jasmine/tests/calcdata_test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/jasmine/tests/calcdata_test.js b/test/jasmine/tests/calcdata_test.js index f51a9e53bc5..df134e774cc 100644 --- a/test/jasmine/tests/calcdata_test.js +++ b/test/jasmine/tests/calcdata_test.js @@ -3,7 +3,7 @@ var Plotly = require('@lib/index'); var createGraphDiv = require('../assets/create_graph_div'); var destroyGraphDiv = require('../assets/destroy_graph_div'); -fdescribe('calculated data and points', function() { +describe('calculated data and points', function() { describe('connectGaps', function() { var gd; From 5ade8a8780be5e00cdf2d908e924b84bd96bcc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Tusz?= Date: Thu, 25 Feb 2016 12:14:06 -0500 Subject: [PATCH 4/5] Revert to original return statement --- src/plots/cartesian/set_convert.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/plots/cartesian/set_convert.js b/src/plots/cartesian/set_convert.js index c96459a1f73..2070dc30cb6 100644 --- a/src/plots/cartesian/set_convert.js +++ b/src/plots/cartesian/set_convert.js @@ -187,10 +187,10 @@ module.exports = function setConvert(ax) { if(v !== null && v !== undefined && ax._categories.indexOf(v) === -1){ ax._categories.push(v); - return ax._categories.length - 1; - }else{ - return constants.BADNUM; } + + var c = ax._categories.indexOf(v); + return c === -1 ? constants.BADNUM : c; }; ax.d2l = ax.d2c; From a04550fb64ef05aaf61a079a65f39962036f26c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20T=C3=A9treault-Pinard?= Date: Fri, 26 Feb 2016 09:33:57 -0500 Subject: [PATCH 5/5] add null category image test mock --- test/image/baselines/axes_category_null.png | Bin 0 -> 20989 bytes test/image/mocks/axes_category_null.json | 44 ++++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 test/image/baselines/axes_category_null.png create mode 100644 test/image/mocks/axes_category_null.json diff --git a/test/image/baselines/axes_category_null.png b/test/image/baselines/axes_category_null.png new file mode 100644 index 0000000000000000000000000000000000000000..bc75883b8fc2c5769ed40b4ee7d16f42227d4ce6 GIT binary patch literal 20989 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 Mc=>#h!R_$>1DUNFo&W#< literal 0 HcmV?d00001 diff --git a/test/image/mocks/axes_category_null.json b/test/image/mocks/axes_category_null.json new file mode 100644 index 00000000000..1dff64f4b46 --- /dev/null +++ b/test/image/mocks/axes_category_null.json @@ -0,0 +1,44 @@ +{ + "data": [ + { + "x": [ + 1, + 2, + null, + 4, + 5 + ], + "y": [ + 1, + 2, + 3, + 4, + 5 + ], + "connectgaps": false, + "uid": "8ac13a" + } + ], + "layout": { + "title": "null categories", + "xaxis": { + "type": "category", + "range": [ + -0.18336673346693386, + 3.1833667334669338 + ], + "autorange": true + }, + "yaxis": { + "type": "linear", + "range": [ + 0.7070063694267517, + 5.292993630573249 + ], + "autorange": true + }, + "height": 450, + "width": 1000, + "autosize": true + } +}