2 * @fileoverview Tests zero and one-point charts.
3 * These don't have to render nicely, they just have to not crash.
5 * @author dan@dygraphs.com (Dan Vanderkam)
8 import Dygraph from
'../../src/dygraph';
9 import Util from
'./Util';
11 describe("pathological-cases", function() {
17 beforeEach(function() {
18 restoreConsole
= Util
.captureConsole(logs
);
21 afterEach(function() {
25 var graph
= document
.getElementById("graph");
27 it('testZeroPoint', function() {
34 var g
= new Dygraph(graph
, data
, opts
);
37 it('testOnePoint', function() {
45 var g
= new Dygraph(graph
, data
, opts
);
48 it('testCombinations', function() {
52 nanPoint
: [[10, NaN
]],
53 nanPoints
: [[10, NaN
], [20, NaN
]],
54 multiNan1
: [[10, NaN
, 2], [20, 3, NaN
]],
55 multiNan2
: [[10, NaN
, 2], [20, NaN
, 4]],
56 multiNan3
: [[10, NaN
, NaN
], [20, 3, 4], [30, NaN
, NaN
]],
59 negative
: [[-10, -1]],
60 acrossZero
: [[-10, 1], [10, 2]],
61 normal
: [[0,1,9], [10,3,5], [20,2,7], [30,4,3]]
85 for (var baseName
in baseOpts
) {
86 var base
= baseOpts
[baseName
];
87 for (var variantName
in variantOpts
) {
88 var variant
= variantOpts
[variantName
];
95 for (var key
in base
) {
96 if (base
.hasOwnProperty(key
)) opts
[key
] = base
[key
];
98 for (var key
in variant
) {
99 if (variant
.hasOwnProperty(key
)) opts
[key
] = variant
[key
];
102 var h
= document
.createElement('h3');
103 h
.appendChild(document
.createTextNode(baseName
+ ' ' + variantName
));
104 graph
.appendChild(h
);
105 for (var dataName
in dataSets
) {
106 var data
= dataSets
[dataName
];
108 var box
= document
.createElement('fieldset');
109 box
.style
.display
= 'inline-block';
110 var legend
= document
.createElement('legend');
111 legend
.appendChild(document
.createTextNode(dataName
));
112 box
.appendChild(legend
);
113 var gdiv
= document
.createElement('div');
114 gdiv
.style
.display
= 'inline-block';
115 box
.appendChild(gdiv
);
116 graph
.appendChild(box
);
118 var cols
= data
&& data
[0] ? data
[0].length
: 0;
119 opts
.labels
= ['X', 'A', 'B', 'C'].slice(0, cols
);
121 var g
= new Dygraph(gdiv
, data
, opts
);
123 if (dataName
== 'empty') {
124 assert
.deepEqual(logs
, {
126 error
: ["Can't plot empty data set"]
128 logs
.error
= []; // reset
130 assert
.deepEqual(logs
, {log
: [], warn
: [], error
: []});
137 it('testNullLegend', function() {
146 var g
= new Dygraph(graph
, data
, opts
);
149 it('testDivAsString', function() {
153 var g
= new Dygraph('graph', data
, {});
157 it('testConstantSeriesNegative', function() {
162 var g
= new Dygraph('graph', data
, {});
163 // This check could be loosened to
164 // g.yAxisRange()[0] < g.yAxisRange()[1] if it breaks in the future.
165 assert
.deepEqual([-1.1, -0.9], g
.yAxisRange());
169 it('testConstantSeriesNegativeIncludeZero', function() {
174 var g
= new Dygraph('graph', data
, {includeZero
: true});
175 // This check could be loosened to
176 // g.yAxisRange()[0] < g.yAxisRange()[1] if it breaks in the future.
177 assert
.deepEqual([-1.1, 0], g
.yAxisRange());
180 it('should throw with non-existent divs', function() {
185 assert
.throws(function() {
186 new Dygraph(null, data
);
187 }, /non-existent div/);
189 assert
.throws(function() {
190 new Dygraph('non-existent-div-id', data
);
191 }, /non-existent div/);