2 * @fileoverview Test cases for toDomCoords/toDataCoords
4 * @author danvk@google.com (Dan Vanderkam)
7 var ToDomCoordsTestCase
= TestCase("to-dom-coords");
9 ToDomCoordsTestCase
._origFunc
= Dygraph
.getContext
;
10 ToDomCoordsTestCase
.prototype.setUp
= function() {
11 document
.body
.innerHTML
= "<div id='graph'></div>";
12 Dygraph
.getContext
= function(canvas
) {
13 return new Proxy(ToDomCoordsTestCase
._origFunc(canvas
));
17 ToDomCoordsTestCase
.prototype.tearDown
= function() {
18 Dygraph
.getContext
= ToDomCoordsTestCase
._origFunc
;
21 // Checks that toDomCoords and toDataCoords are inverses of one another.
22 ToDomCoordsTestCase
.prototype.checkForInverses
= function(g
) {
23 var x_range
= g
.xAxisRange();
24 var y_range
= g
.yAxisRange();
25 for (var i
= 0; i
<= 10; i
++) {
26 var x
= x_range
[0] + i
/ 10.0 * (x_range
[1] - x_range
[0]);
27 for (var j
= 0; j
<= 10; j
++) {
28 var y
= y_range
[0] + j
/ 10.0 * (y_range
[1] - y_range
[0]);
29 assertEquals(x
, g
.toDataXCoord(g
.toDomXCoord(x
)));
30 assertEquals(y
, g
.toDataYCoord(g
.toDomYCoord(y
)));
35 ToDomCoordsTestCase
.prototype.testPlainChart
= function() {
55 var graph
= document
.getElementById("graph");
56 g
= new Dygraph(graph
, [ [0,0], [100,100] ], opts
);
58 assertEquals([0, 100], g
.toDataCoords(0, 0));
59 assertEquals([0, 0], g
.toDataCoords(0, 400));
60 assertEquals([100, 100], g
.toDataCoords(400, 0));
61 assertEquals([100, 0], g
.toDataCoords(400, 400));
63 this.checkForInverses(g
);
65 // TODO(konigsberg): This doesn't really belong here. Move to its own test.
66 var htx
= g
.hidden_ctx_
;
67 assertEquals(1, CanvasAssertions
.numLinesDrawn(htx
, '#ff0000'));
70 ToDomCoordsTestCase
.prototype.testChartWithAxes
= function() {
87 var graph
= document
.getElementById("graph");
88 g
= new Dygraph(graph
, [ [0,0], [100,100] ], opts
);
90 assertEquals([0, 100], g
.toDataCoords(100, 0));
91 assertEquals([0, 0], g
.toDataCoords(100, 400));
92 assertEquals([100, 100], g
.toDataCoords(500, 0));
93 assertEquals([100, 0], g
.toDataCoords(500, 400));
95 this.checkForInverses(g
);
98 ToDomCoordsTestCase
.prototype.testChartWithAxesAndLabels
= function() {
103 yAxisLabelWidth
: 100,
108 valueRange
: [0, 100],
109 dateWindow
: [0, 100],
113 ylabel
: 'This is the y-axis',
114 xlabel
: 'This is the x-axis',
116 title
: 'This is the title of the chart',
120 var graph
= document
.getElementById("graph");
121 g
= new Dygraph(graph
, [ [0,0], [100,100] ], opts
);
123 assertEquals([0, 100], g
.toDataCoords(100, 25));
124 assertEquals([0, 0], g
.toDataCoords(100, 425));
125 assertEquals([100, 100], g
.toDataCoords(500, 25));
126 assertEquals([100, 0], g
.toDataCoords(500, 425));
128 this.checkForInverses(g
);
131 ToDomCoordsTestCase
.prototype.testYAxisLabelWidth
= function() {
133 yAxisLabelWidth
: 100,
136 valueRange
: [0, 100],
137 dateWindow
: [0, 100],
142 var graph
= document
.getElementById("graph");
143 g
= new Dygraph(graph
, [ [0,0], [100,100] ], opts
);
145 assertEquals([100, 0], g
.toDomCoords(0, 100));
146 assertEquals([500, 486], g
.toDomCoords(100, 0));
148 g
.updateOptions({ yAxisLabelWidth
: 50 });
149 assertEquals([50, 0], g
.toDomCoords(0, 100));
150 assertEquals([500, 486], g
.toDomCoords(100, 0));
153 ToDomCoordsTestCase
.prototype.testAxisTickSize
= function() {
155 yAxisLabelWidth
: 100,
158 valueRange
: [0, 100],
159 dateWindow
: [0, 100],
164 var graph
= document
.getElementById("graph");
165 g
= new Dygraph(graph
, [ [0,0], [100,100] ], opts
);
167 assertEquals([100, 0], g
.toDomCoords(0, 100));
168 assertEquals([500, 486], g
.toDomCoords(100, 0));
170 g
.updateOptions({ axisTickSize
: 50 });
171 assertEquals([200, 0], g
.toDomCoords(0, 100));
172 assertEquals([500, 386], g
.toDomCoords(100, 0));
175 ToDomCoordsTestCase
.prototype.testChartLogarithmic
= function() {
190 var graph
= document
.getElementById("graph");
191 g
= new Dygraph(graph
, [ [1,1], [4,4] ], opts
);
194 assertEqualsDelta([0, 4], g
.toDataCoords(0, 0), epsilon
);
195 assertEqualsDelta([0, 1], g
.toDataCoords(0, 400), epsilon
);
196 assertEqualsDelta([10, 4], g
.toDataCoords(400, 0), epsilon
);
197 assertEqualsDelta([10, 1], g
.toDataCoords(400, 400), epsilon
);
198 assertEqualsDelta([10, 2], g
.toDataCoords(400, 200), epsilon
);
200 assertEquals([0, 0], g
.toDomCoords(0, 4));
201 assertEquals([0, 400], g
.toDomCoords(0, 1));
202 assertEquals([400, 0], g
.toDomCoords(10, 4));
203 assertEquals([400, 400], g
.toDomCoords(10, 1));
204 assertEquals([400, 200], g
.toDomCoords(10, 2));