// Test the line controller
describe('Line controller tests', function() {
-
+
beforeEach(function() {
window.addDefaultMatchers(jasmine);
});
afterEach(function() {
window.releaseAllCharts();
});
-
+
it('should be constructed', function() {
var chart = window.acquireChart({
type: 'line',
spyOn(meta.data[3], 'draw');
chart.update();
-
+
expect(meta.dataset.draw.calls.count()).toBe(0);
expect(meta.data[0].draw.calls.count()).toBe(1);
expect(meta.data[1].draw.calls.count()).toBe(1);
spyOn(meta.data[3], 'draw');
chart.update();
-
+
expect(meta.dataset.draw.calls.count()).toBe(0);
expect(meta.data[0].draw.calls.count()).toBe(1);
expect(meta.data[1].draw.calls.count()).toBe(1);
}
},
});
-
+
var meta = chart.getDatasetMeta(0);
expect(meta.data.length).toBe(4);
-
+
chart.data.datasets[0].data = [1, 2]; // remove 2 items
chart.data.datasets[0].borderWidth = 1;
chart.update();
expect(meta.data.length).toBe(2);
-
-
+
+
[ { x: 44, y: 484 },
{ x: 193, y: 32 }
].forEach(function(expected, i) {
borderColor: 'blue',
}));
});
-
+
chart.data.datasets[0].data = [1, 2, 3]; // add 1 items
chart.update();
expect(meta.data.length).toBe(3); // should add a new meta data item
});
+ it('should correctly calculate x scale for label and point', function(){
+ var chart = window.acquireChart({
+ type: 'line',
+ data: {
+ labels: ["One"],
+ datasets: [{
+ data: [1],
+ }]
+ },
+ options: {
+ hover: {
+ mode: 'single'
+ },
+ scales: {
+ yAxes: [{
+ ticks: {
+ beginAtZero:true
+ }
+ }]
+ }
+ }
+ });
+
+ var meta = chart.getDatasetMeta(0);
+ // 1 point
+ var point = meta.data[0];
+ expect(point._model.x).toBeCloseToPixel(267);
+
+ // 2 points
+ chart.data.labels = ["One", "Two"];
+ chart.data.datasets[0].data = [1, 2];
+ chart.update();
+
+ var points = meta.data;
+
+ expect(points[0]._model.x).toBeCloseToPixel(37);
+ expect(points[1]._model.x).toBeCloseToPixel(498);
+
+ // 3 points
+ chart.data.labels = ["One", "Two", "Three"];
+ chart.data.datasets[0].data = [1, 2, 3];
+ chart.update();
+
+ points = meta.data;
+
+ expect(points[0]._model.x).toBeCloseToPixel(37);
+ expect(points[1]._model.x).toBeCloseToPixel(265);
+ expect(points[2]._model.x).toBeCloseToPixel(493);
+
+ // 4 points
+ chart.data.labels = ["One", "Two", "Three", "Four"];
+ chart.data.datasets[0].data = [1, 2, 3, 4];
+ chart.update();
+
+ points = meta.data;
+
+ expect(points[0]._model.x).toBeCloseToPixel(37);
+ expect(points[1]._model.x).toBeCloseToPixel(190);
+ expect(points[2]._model.x).toBeCloseToPixel(343);
+ expect(points[3]._model.x).toBeCloseToPixel(497);
+ });
+
it('should update elements when the y scale is stacked', function() {
var chart = window.acquireChart({
type: 'line',
}
}
});
-
+
var meta0 = chart.getDatasetMeta(0);
[ { x: 38, y: 161 },
expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta1.data[i]._model.y).toBeCloseToPixel(values.y);
});
-
+
});
it('should update elements when the y scale is stacked with multiple axes', function() {
}
}
});
-
+
var meta0 = chart.getDatasetMeta(0);
[ { x: 76, y: 161 },
expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta1.data[i]._model.y).toBeCloseToPixel(values.y);
});
-
+
});
it('should update elements when the y scale is stacked and datasets is scatter data', function() {
}
}
});
-
+
var meta0 = chart.getDatasetMeta(0);
[ { x: 38, y: 161 },
expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta1.data[i]._model.y).toBeCloseToPixel(values.y);
});
-
+
});
it('should update elements when the y scale is stacked and data is strings', function() {
}
}
});
-
+
var meta0 = chart.getDatasetMeta(0);
[ { x: 38, y: 161 },
expect(meta1.data[i]._model.x).toBeCloseToPixel(values.x);
expect(meta1.data[i]._model.y).toBeCloseToPixel(values.y);
});
-
+
});
it('should find the correct scale zero when the data is all positive', function() {
labels: ['label1', 'label2', 'label3', 'label4']
},
});
-
+
var meta = chart.getDatasetMeta(0);
-
+
expect(meta.dataset._model).toEqual(jasmine.objectContaining({
scaleTop: 32,
scaleBottom: 484,
labels: ['label1', 'label2', 'label3', 'label4']
},
});
-
+
var meta = chart.getDatasetMeta(0);
-
+
expect(meta.dataset._model).toEqual(jasmine.objectContaining({
scaleTop: 32,
scaleBottom: 484,
datasets: [{
data: [0, 0],
label: 'dataset1',
-
+
// line styles
backgroundColor: 'rgb(98, 98, 98)',
borderColor: 'rgb(8, 8, 8)',
labels: ['label1', 'label2', 'label3', 'label4']
}
});
-
+
var meta = chart.getDatasetMeta(0);
-
+
chart.data.datasets[0].data = [1, 2]; // remove 2 items
chart.update();
expect(meta.data.length).toBe(2);
}
}
});
-
+
var meta = chart.getDatasetMeta(0);
var point = meta.data[0];