diff options
Diffstat (limited to 'web/nms.gathering.org/speedometer/c3-master/spec/grid-spec.js')
-rw-r--r-- | web/nms.gathering.org/speedometer/c3-master/spec/grid-spec.js | 365 |
1 files changed, 365 insertions, 0 deletions
diff --git a/web/nms.gathering.org/speedometer/c3-master/spec/grid-spec.js b/web/nms.gathering.org/speedometer/c3-master/spec/grid-spec.js new file mode 100644 index 0000000..0443ec1 --- /dev/null +++ b/web/nms.gathering.org/speedometer/c3-master/spec/grid-spec.js @@ -0,0 +1,365 @@ +describe('c3 chart grid', function () { + 'use strict'; + + var chart, args; + + beforeEach(function (done) { + chart = window.initChart(chart, args, done); + }); + + describe('y grid show', function () { + + it('should update args', function () { + args = { + data: { + columns: [ + ['data1', 30, 200, 100, 400, 150, 250] + ] + }, + axis: { + y: { + tick: { + } + } + }, + grid: { + y: { + show: false + } + } + }; + expect(true).toBeTruthy(); + }); + + it('should not show y grids', function () { + expect(chart.internal.main.select('.c3-ygrids').size()).toBe(0); + }); + + it('should update args to show y grids', function () { + args.grid.y.show = true; + expect(true).toBeTruthy(); + }); + + it('should show y grids', function () { + var ygrids = chart.internal.main.select('.c3-ygrids'); + expect(ygrids.size()).toBe(1); + expect(ygrids.selectAll('.c3-ygrid').size()).toBe(9); + }); + + it('should update args to show only 3 y grids', function () { + args.grid.y.ticks = 3; + expect(true).toBeTruthy(); + }); + + it('should show only 3 y grids', function () { + var ygrids = chart.internal.main.select('.c3-ygrids'); + expect(ygrids.size()).toBe(1); + expect(ygrids.selectAll('.c3-ygrid').size()).toBe(3); + }); + + it('should update args to show y grids depending on y axis ticks', function () { + args.axis.y.tick.count = 5; + expect(true).toBeTruthy(); + }); + + it('should show grids depending on y axis ticks', function () { + var ygrids = chart.internal.main.select('.c3-ygrids'), + expectedYs = []; + ygrids.selectAll('.c3-ygrid').each(function (d, i) { + expectedYs[i] = +d3.select(this).attr('y1'); + }); + expect(ygrids.size()).toBe(1); + expect(ygrids.selectAll('.c3-ygrid').size()).toBe(5); + chart.internal.main.select('.c3-axis-y').selectAll('.tick').each(function (d, i) { + var t = d3.transform(d3.select(this).attr('transform')); + expect(t.translate[1]).toBe(expectedYs[i]); + }); + }); + }); + + describe('y grid lines', function () { + + describe('position', function () { + + it('should update args', function () { + args = { + data: { + columns: [ + ['data1', 10, 200, 100, 400, 150, 250] + ] + }, + grid: { + y: { + lines: [ + {value: 30, text: 'Lable 30', position: 'start'}, + {value: 145, text: 'Lable 145', position: 'middle'}, + {value: 225, text: 'Lable 225'} + ] + } + } + }; + expect(true).toBeTruthy(); + }); + + it('should show 3 grid lines', function () { + expect(chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line').size()).toBe(3); + }); + + it('should locate grid lines properly', function () { + var lines = chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line'), + expectedY1s = [373, 268, 196]; + lines.each(function (d, i) { + var y1 = d3.select(this).select('line').attr('y1'); + expect(y1).toBeCloseTo(expectedY1s[i], -2); + }); + }); + + it('should locate grid texts properly', function () { + var lines = chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line'), + expectedPositions = ['start', 'middle', 'end'], + expectedDxs = [4, 0, -4]; + lines.each(function (d, i) { + var text = d3.select(this).select('text'), + textAnchor = text.attr('text-anchor'), + dx = text.attr('dx'); + expect(textAnchor).toBe(expectedPositions[i]); + expect(+dx).toBe(expectedDxs[i]); + }); + }); + + it('should update args', function () { + args = { + data: { + columns: [ + ['data1', 10, 200, 100, 400, 150, 250] + ] + }, + axis: { + rotated: true + }, + grid: { + y: { + lines: [ + {value: 30, text: 'Lable 30', position: 'start'}, + {value: 145, text: 'Lable 145', position: 'middle'}, + {value: 225, text: 'Lable 225'} + ] + } + } + }; + expect(true).toBeTruthy(); + }); + + it('should show 3 grid lines', function () { + expect(chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line').size()).toBe(3); + }); + + it('should locate grid lines properly', function () { + var lines = chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line'), + expectedX1s = [75, 220, 321]; + lines.each(function (d, i) { + var x1 = d3.select(this).select('line').attr('x1'); + expect(x1).toBeCloseTo(expectedX1s[i], -2); + }); + }); + + it('should locate grid texts properly', function () { + var lines = chart.internal.main.selectAll('.c3-ygrid-lines .c3-ygrid-line'), + expectedPositions = ['start', 'middle', 'end'], + expectedDxs = [4, 0, -4]; + lines.each(function (d, i) { + var text = d3.select(this).select('text'), + textAnchor = text.attr('text-anchor'), + dx = text.attr('dx'); + expect(textAnchor).toBe(expectedPositions[i]); + expect(+dx).toBe(expectedDxs[i]); + }); + }); + + }); + }); + + describe('x grid lines', function () { + + describe('position', function () { + + it('should have correct height', function () { + args = { + data: { + columns: [ + ['data1', 30, 200, 100, 400], + ] + }, + grid: { + x: { + lines: [ + {value: 1, text: 'Label 1', position: 'start'}, + {value: 2, text: 'Label 2', position: 'middle'}, + {value: 3, text: 'Label 3'}, + ] + } + }, + }; + expect(true).toBeTruthy(); + }); + + it('should show 3 grid lines', function () { + expect(chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line').size()).toBe(3); + }); + + it('should locate grid lines properly', function () { + var lines = chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line'), + expectedX1s = [202, 397, 593]; + lines.each(function (d, i) { + var x1 = d3.select(this).select('line').attr('x1'); + expect(x1).toBeCloseTo(expectedX1s[i], -2); + }); + }); + + it('should locate grid texts properly', function () { + var lines = chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line'), + expectedPositions = ['start', 'middle', 'end'], + expectedDxs = [4, 0, -4]; + lines.each(function (d, i) { + var text = d3.select(this).select('text'), + textAnchor = text.attr('text-anchor'), + dx = text.attr('dx'); + expect(textAnchor).toBe(expectedPositions[i]); + expect(+dx).toBe(expectedDxs[i]); + }); + }); + + it('should update args', function () { + args = { + data: { + columns: [ + ['data1', 30, 200, 100, 400], + ] + }, + axis: { + rotated: true + }, + grid: { + x: { + lines: [ + {value: 1, text: 'Label 1', position: 'start'}, + {value: 2, text: 'Label 2', position: 'middle'}, + {value: 3, text: 'Label 3'}, + ] + } + }, + }; + expect(true).toBeTruthy(); + }); + + it('should show 3 grid lines', function () { + expect(chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line').size()).toBe(3); + }); + + it('should locate grid lines properly', function () { + var lines = chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line'), + expectedY1s = [144, 283, 421]; + lines.each(function (d, i) { + var y1 = d3.select(this).select('line').attr('y1'); + expect(y1).toBeCloseTo(expectedY1s[i], -2); + }); + }); + + it('should locate grid texts properly', function () { + var lines = chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line'), + expectedPositions = ['start', 'middle', 'end'], + expectedDxs = [4, 0, -4]; + lines.each(function (d, i) { + var text = d3.select(this).select('text'), + textAnchor = text.attr('text-anchor'), + dx = text.attr('dx'); + expect(textAnchor).toBe(expectedPositions[i]); + expect(+dx).toBe(expectedDxs[i]); + }); + }); + + }); + + describe('with padding.top', function () { + + it('should have correct height', function () { + args = { + data: { + columns: [ + ['data1', 30, 200, 100, 400], + ] + }, + grid: { + x: { + lines: [ + {value: 3, text: 'Label 3'} + ] + } + }, + padding: { + top: 50 + } + }; + expect(true).toBeTruthy(); + }); + + it('should show x grid lines', function () { + var lines = chart.internal.main.select('.c3-xgrid-lines .c3-xgrid-line'), + expectedX1 = 593, + expectedText = ['Label 3']; + lines.each(function (id, i) { + var line = d3.select(this), + l = line.select('line'), + t = line.select('text'); + expect(+l.attr('x1')).toBeCloseTo(expectedX1, -2); + expect(t.text()).toBe(expectedText[i]); + }); + }); + + }); + + describe('on category axis', function () { + + it('should update args', function () { + args = { + data: { + x: 'x', + columns: [ + ['x', 'a', 'b', 'c', 'd'], + ['data1', 30, 200, 100, 400], + ] + }, + axis: { + x: { + type: 'category' + } + }, + grid: { + x: { + lines: [ + {value: 3, text: 'Label 3'}, + {value: 'a', text: 'Label a'} + ] + } + } + }; + expect(true).toBeTruthy(); + }); + + it('should show x grid lines', function () { + var lines = chart.internal.main.selectAll('.c3-xgrid-lines .c3-xgrid-line'), + expectedX1 = [515, 74], + expectedText = ['Label 3', 'Label a']; + lines.each(function (id, i) { + var line = d3.select(this), + l = line.select('line'), + t = line.select('text'); + expect(+l.attr('x1')).toBeCloseTo(expectedX1[i], -2); + expect(t.text()).toBe(expectedText[i]); + }); + }); + + }); + }); + +}); |