--- a/js/flotr2/spec/Chart.js +++ b/js/flotr2/spec/Chart.js @@ -1,1 +1,121 @@ +describe('Charts', function () { + var + width = 480, + height = 320, + a, b, options, defaults; + + defaults = { + width : 480, + height : 320, + color : "rgb(192,216,0)", + context : null, + data : null, + fill : false, + fillColor : null, + fillOpacity : 0.4, + fillStyle : "rgba(192,216,0,0.4)", + fontColor : "#545454", + fontSize : 7.5, + htmlText : true, + lineWidth : 2, + shadowSize : 4, + show : false, + stacked : false, + textEnabled : true, + xScale : function (x) { return x; }, + yScale : function (y) { return height - y; } + }; + + /** + * @param skip bool Skip test against development version (use this when developing test) + */ + function drawTest (data, o, skip) { + options.data = data; + if (o) _.extend(options, o); + + if (!skip) TestFlotr.graphTypes.lines.draw(options); + options.context = b.getContext('2d'); + StableFlotr.graphTypes.lines.draw(options); + + expect(b).toImageDiffEqual(a); + } + + describe('Lines', function () { + + beforeEach(function () { + options = _.clone(defaults); + }); + + /* + describe('Data', function () { + it('gets a range', function () { + options.stacked = true; + options.data = [[0, 0], [240, 160], [480, 320]]; + range = TestFlotr.graphTypes.lines.range(options); + expect(range.min).toEqual(0); + expect(range.max).toEqual(320); + }); + }); + */ + + describe('Draw', function () { + + beforeEach(function () { + this.addMatchers(imagediff.jasmine); + a = imagediff.createCanvas(width, height); + b = imagediff.createCanvas(width, height); + options.context = a.getContext('2d'); + }); + + it('draws a line chart', function () { + drawTest([ + [0, 0], + [240, 300], + [480, 0] + ]); + }); + + it('skips null values', function () { + drawTest([ + [0, 0], + [100, 50], + [200, null], + [300, 150], + [400, 200], + [480, 240] + ]); + }); + + it('draws two lines', function () { + // First line + drawTest([[0, 0], [240, 160], [480, 320]]); + + // Second Line + options.context = a.getContext('2d'); + drawTest([[0, 320], [240, 160], [480, 0]]); + }); + + it('fills a line', function () { + drawTest([ + [0, 0], + [240, 300], + [480, 0] + ], { + fill : true + }); + }); + + it('draws no shadow', function () { + drawTest([ + [0, 0], + [240, 300], + [480, 0] + ], { + shadowSize : 0 + }); + }); + }); + }); +}); +