X-Git-Url: https://adrianiainlam.tk/git/?a=blobdiff_plain;ds=sidebyside;f=auto_tests%2Ftests%2Ffast_canvas_proxy.js;h=217dbd619ffdbe0a2d05ee09372cb8975748a0f8;hb=93ec1094eb75477b455efaa7adeb10190b87992b;hp=1e4bfaf34bb7dc1298da3e9417e17d3cfa610da8;hpb=ce0b1164e61f2372d46deb16fd1320c1783125a6;p=dygraphs.git diff --git a/auto_tests/tests/fast_canvas_proxy.js b/auto_tests/tests/fast_canvas_proxy.js index 1e4bfaf..217dbd6 100644 --- a/auto_tests/tests/fast_canvas_proxy.js +++ b/auto_tests/tests/fast_canvas_proxy.js @@ -3,13 +3,11 @@ * * @author danvdk@gmail.com (Dan Vanderkam) */ -var fastCanvasProxyTestCase = TestCase("fast-canvas-proxy"); -fastCanvasProxyTestCase.prototype.setUp = function() { -}; +import DygraphCanvasRenderer from '../../src/dygraph-canvas'; +import Proxy from './Proxy'; -fastCanvasProxyTestCase.prototype.tearDown = function() { -}; +describe("fast-canvas-proxy", function() { var fakeCanvasContext = { moveTo: function() {}, @@ -32,7 +30,7 @@ function extractMoveToAndLineToCalls(proxy) { return out; } -fastCanvasProxyTestCase.prototype.testExtraMoveTosElided = function() { +it('testExtraMoveTosElided', function() { var htx = new Proxy(fakeCanvasContext); var fastProxy = DygraphCanvasRenderer._fastCanvasProxy(htx); @@ -43,12 +41,12 @@ fastCanvasProxyTestCase.prototype.testExtraMoveTosElided = function() { fastProxy.moveTo(3, 1); fastProxy.stroke(); - assertEquals([['moveTo', 1, 1], + assert.deepEqual([['moveTo', 1, 1], ['lineTo', 2, 1], ['lineTo', 3, 1]], extractMoveToAndLineToCalls(htx)); -}; +}); -fastCanvasProxyTestCase.prototype.testConsecutiveMoveTosElided = function() { +it('testConsecutiveMoveTosElided', function() { var htx = new Proxy(fakeCanvasContext); var fastProxy = DygraphCanvasRenderer._fastCanvasProxy(htx); @@ -59,12 +57,12 @@ fastCanvasProxyTestCase.prototype.testConsecutiveMoveTosElided = function() { fastProxy.moveTo(3.2, 3); fastProxy.stroke(); - assertEquals([['moveTo', 1, 1], + assert.deepEqual([['moveTo', 1, 1], ['lineTo', 2, 1], ['moveTo', 3.2, 3]], extractMoveToAndLineToCalls(htx)); -}; +}); -fastCanvasProxyTestCase.prototype.testSuperfluousSegmentsElided = function() { +it('testSuperfluousSegmentsElided', function() { var htx = new Proxy(fakeCanvasContext); var fastProxy = DygraphCanvasRenderer._fastCanvasProxy(htx); @@ -90,10 +88,69 @@ fastCanvasProxyTestCase.prototype.testSuperfluousSegmentsElided = function() { fastProxy.moveTo(3, 0); // dodge the "don't touch the last pixel" rule. fastProxy.stroke(); - assertEquals([['moveTo', 0.6, 1], + assert.deepEqual([['moveTo', 0.6, 1], ['lineTo', 1.0, 5], ['lineTo', 1.2, 0], ['lineTo', 1.7, 30], ['lineTo', 1.8, -30], ['moveTo', 3, 0]], extractMoveToAndLineToCalls(htx)); -}; +}); + + +// For a more visual version of this test, see +// https://gist.github.com/danvk/e98dbb24253c9b153696 +// The drawing commands in the following two tests are taken from there. +it('should handle gaps on the left', function() { + var htx = new Proxy(fakeCanvasContext); + var fastProxy = DygraphCanvasRenderer._fastCanvasProxy(htx); + + fastProxy.moveTo(0, 320); + fastProxy.lineTo(0, 320); + fastProxy.lineTo(53.21, 187); + fastProxy.lineTo(53.23, 29); + fastProxy.lineTo(53.41, 320); + fastProxy.lineTo(54.15, 320); + fastProxy.lineTo(475, 320); + fastProxy.lineTo(475, 320); + fastProxy.fill(); + + assert.deepEqual([ + ['moveTo', 0, 320], + ['lineTo', 0, 320], + ['lineTo', 53.21, 187], + ['lineTo', 53.23, 29], + ['lineTo', 53.41, 320], + ['lineTo', 54.15, 320], + ['lineTo', 475, 320], + ['lineTo', 475, 320] + ], extractMoveToAndLineToCalls(htx)); +}); + +it('should handle gaps on the right', function() { + var htx = new Proxy(fakeCanvasContext); + var fastProxy = DygraphCanvasRenderer._fastCanvasProxy(htx); + fastProxy.moveTo(240.2, 320); + fastProxy.lineTo(240.2, 320); + fastProxy.lineTo(240.2, 174); + fastProxy.lineTo(240.7, 145); + fastProxy.lineTo(240.8, 320); + fastProxy.lineTo(241.3, 29); + fastProxy.lineTo(241.4, 320); + fastProxy.lineTo(715.9, 320); + fastProxy.lineTo(715.9, 320); + fastProxy.fill(); + + assert.deepEqual([ + ['moveTo', 240.2, 320], + ['lineTo', 240.2, 320], + ['lineTo', 240.2, 174], + ['lineTo', 240.7, 145], + ['lineTo', 240.8, 320], + ['lineTo', 241.3, 29], + ['lineTo', 241.4, 320], + ['lineTo', 715.9, 320], + ['lineTo', 715.9, 320] + ], extractMoveToAndLineToCalls(htx)); +}); + +});