From e01c45df2e0590de5787992b2cf13eb16592230e Mon Sep 17 00:00:00 2001 From: Victor Woeltjen Date: Mon, 6 Apr 2015 14:27:43 -0700 Subject: [PATCH] [Plot] Test 2D chart drawing Test drawing using fallback canvas 2D API, WTD-1070. --- platform/features/plot/src/Canvas2DChart.js | 6 +- .../features/plot/test/Canvas2DChartSpec.js | 72 +++++++++++++++++++ platform/features/plot/test/suite.json | 1 + 3 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 platform/features/plot/test/Canvas2DChartSpec.js diff --git a/platform/features/plot/src/Canvas2DChart.js b/platform/features/plot/src/Canvas2DChart.js index 244fe75ec3..d3d344d56a 100644 --- a/platform/features/plot/src/Canvas2DChart.js +++ b/platform/features/plot/src/Canvas2DChart.js @@ -14,10 +14,10 @@ define( */ function Canvas2DChart(canvas) { var c2d = canvas.getContext('2d'), - dimensions, - origin, width = canvas.width, - height = canvas.height; + height = canvas.height, + dimensions = [ width, height ], + origin = [ 0, 0 ]; // Convert from logical to physical x coordinates function x(v) { diff --git a/platform/features/plot/test/Canvas2DChartSpec.js b/platform/features/plot/test/Canvas2DChartSpec.js new file mode 100644 index 0000000000..06f53c8bf8 --- /dev/null +++ b/platform/features/plot/test/Canvas2DChartSpec.js @@ -0,0 +1,72 @@ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MergeModelsSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../src/Canvas2DChart"], + function (Canvas2DChart) { + "use strict"; + + describe("A canvas 2d chart", function () { + var mockCanvas, + mock2d, + chart; + + beforeEach(function () { + mockCanvas = jasmine.createSpyObj("canvas", [ "getContext" ]); + mock2d = jasmine.createSpyObj( + "2d", + [ + "clearRect", + "beginPath", + "moveTo", + "lineTo", + "stroke", + "fillRect" + ] + ); + mockCanvas.getContext.andReturn(mock2d); + + chart = new Canvas2DChart(mockCanvas); + }); + + it("allows the canvas to be cleared", function () { + chart.clear(); + expect(mock2d.clearRect).toHaveBeenCalled(); + }); + + it("doees not construct if 2D is unavailable", function () { + mockCanvas.getContext.andReturn(undefined); + expect(function () { + return new Canvas2DChart(mockCanvas); + }).toThrow(); + }); + + it("allows dimensions to be set", function () { + // No return value, just verify API is present + chart.setDimensions([120, 120], [0, 10]); + }); + + it("allows lines to be drawn", function () { + var testBuffer = [ 0, 1, 3, 8 ], + testColor = [ 0.25, 0.33, 0.66, 1.0 ], + testPoints = 2; + chart.drawLine(testBuffer, testColor, testPoints); + expect(mock2d.beginPath).toHaveBeenCalled(); + expect(mock2d.lineTo.calls.length).toEqual(1); + expect(mock2d.stroke).toHaveBeenCalled(); + }); + + it("allows squares to be drawn", function () { + var testMin = [0, 1], + testMax = [10, 10], + testColor = [ 0.25, 0.33, 0.66, 1.0 ]; + + chart.drawSquare(testMin, testMax, testColor); + expect(mock2d.fillRect).toHaveBeenCalled(); + }); + + }); + } +); \ No newline at end of file diff --git a/platform/features/plot/test/suite.json b/platform/features/plot/test/suite.json index 2df3badfef..92ee3b07c8 100644 --- a/platform/features/plot/test/suite.json +++ b/platform/features/plot/test/suite.json @@ -1,4 +1,5 @@ [ + "Canvas2DChart", "GLChart", "MCTChart", "PlotController",