From: Evert Timberg Date: Mon, 31 Aug 2015 01:50:41 +0000 (-0400) Subject: Check some more data on the linear scale after fitting X-Git-Tag: 2.0.0-alpha4~32^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=02e0f3f85657bbb85fd02c0d1a50ff50d07db619;p=thirdparty%2FChart.js.git Check some more data on the linear scale after fitting --- diff --git a/test/scale.linear.tests.js b/test/scale.linear.tests.js index f0ac83c39..811876ab0 100644 --- a/test/scale.linear.tests.js +++ b/test/scale.linear.tests.js @@ -162,6 +162,47 @@ describe('Linear Scale', function() { expect(scale.max).toBe(1); }); + it ('should forcibly include 0 in the range if the beginAtZero option is used', function() { + var scaleID = 'myScale'; + + var mockData = { + datasets: [{ + yAxisID: scaleID, + data: [20, 30, 40, 50] + }] + }; + + var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear')); + + + var Constructor = Chart.scaleService.getScaleConstructor('linear'); + var scale = new Constructor({ + ctx: {}, + options: config, + data: mockData, + id: scaleID + }); + + scale.calculateRange(); + scale.generateTicks(400, 400); + expect(scale.ticks).toEqual([50, 45, 40, 35, 30, 25, 20]); + + config.beginAtZero = true; + scale.calculateRange(); + scale.generateTicks(400, 400); + expect(scale.ticks).toEqual([50, 45, 40, 35, 30, 25, 20, 15, 10, 5, 0]); + + mockData.datasets[0].data = [-20, -30, -40, -50]; + scale.calculateRange(); + scale.generateTicks(400, 400); + expect(scale.ticks).toEqual([0, -5, -10, -15, -20, -25, -30, -35, -40, -45, -50]); + + config.beginAtZero = false; + scale.calculateRange(); + scale.generateTicks(400, 400); + expect(scale.ticks).toEqual([-20, -25, -30, -35, -40, -45, -50]); + }); + it ('Should generate tick marks', function() { var scaleID = 'myScale'; @@ -406,4 +447,86 @@ describe('Linear Scale', function() { expect(horizontalScale.getPointPixelForValue(-2, 0, 0)).toBe(5); // left + paddingLeft expect(horizontalScale.getPointPixelForValue(0, 0, 0)).toBe(55); // halfway }); + + it ('should get the correct pixel value for a bar', function() { + var scaleID = 'myScale'; + + var mockData = { + datasets: [{ + xAxisID: scaleID, // for the horizontal scale + yAxisID: scaleID, + data: [-5, 0, 2, -3, 5] + }] + }; + + var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear')); + var Constructor = Chart.scaleService.getScaleConstructor('linear'); + var verticalScale = new Constructor({ + ctx: {}, + options: config, + data: mockData, + id: scaleID + }); + + verticalScale.calculateRange(); + verticalScale.generateTicks(50, 100); + + // Fake out positioning of the scale service + verticalScale.left = 0; + verticalScale.top = 0; + verticalScale.right = 50; + verticalScale.bottom = 110; + verticalScale.paddingTop = 5; + verticalScale.paddingBottom = 5; + verticalScale.width = 50; + verticalScale.height = 110; + + expect(verticalScale.calculateBarBase()).toBe(56); // 0 point + expect(verticalScale.calculateBarY(0, 0)).toBe(96.66666666666667); // bottom + }); + + it ('should fit correctly', function() { + var scaleID = 'myScale'; + + var mockData = { + datasets: [{ + xAxisID: scaleID, // for the horizontal scale + yAxisID: scaleID, + data: [-5, 0, 2, -3, 5] + }] + }; + var mockContext = window.createMockContext(); + + var config = Chart.helpers.clone(Chart.scaleService.getScaleDefaults('linear')); + var Constructor = Chart.scaleService.getScaleConstructor('linear'); + var verticalScale = new Constructor({ + ctx: mockContext, + options: config, + data: mockData, + id: scaleID + }); + + var minSize = verticalScale.fit(100, 300); + expect(minSize).toEqual({ + width: 33, + height: 300, + }); + expect(verticalScale.width).toBe(33); + expect(verticalScale.height).toBe(300); + expect(verticalScale.paddingTop).toBe(6); + expect(verticalScale.paddingBottom).toBe(6); + expect(verticalScale.paddingLeft).toBe(0); + expect(verticalScale.paddingRight).toBe(0); + + // Refit with margins to see the padding go away + minSize = verticalScale.fit(33, 300, {left: 0, right: 0, top: 15, bottom: 3}); + expect(minSize).toEqual({ + width: 33, + height: 300, + }); + expect(verticalScale.paddingTop).toBe(0); + expect(verticalScale.paddingBottom).toBe(3); + expect(verticalScale.paddingLeft).toBe(0); + expect(verticalScale.paddingRight).toBe(0); + }); }); \ No newline at end of file