1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4
<title>Chart Aria Event Tests</title>
5
<style type="text/css">
11
<script type="text/javascript" src="../../../build/yui/yui.js"></script>
13
<body class="yui3-skin-sam">
14
<h1>Chart Aria Event Tests</h1>
15
<div id="mychart"></div>
17
<script type="text/javascript">
21
filter: (window.location.search.match(/[?&]filter=([^&]+)/) || [])[1] || 'min'
22
}).use('charts', 'test', 'node-event-simulate', 'event-focus', 'console', function (Y) {
26
Y.Tests.ChartAriaEvents = (function(){
28
var ASSERT = Y.Assert,
29
ObjectAssert = Y.ObjectAssert,
36
//-------------------------------------------------------------------------
37
// Chart AriaEvent Test Case
38
//-------------------------------------------------------------------------
39
function ChartAriaEventTestCase(cfg, type)
41
ChartAriaEventTestCase.superclass.constructor.call(this);
44
this.name = type + " Chart AriaEvent KeyDown Tests";
47
Y.extend(ChartAriaEventTestCase, Y.Test.Case, {
48
//---------------------------------------------------------------------
49
// Setup and teardown of test harnesses
50
//---------------------------------------------------------------------
53
* Sets up several event handlers used to test UserAction mouse events.
58
this.chart = new Y.Chart(this.attrCfg);
59
this.contentBox = this.chart.get("contentBox");
64
//assign event handler
65
this.handler = Y.on("keydown", Y.bind(this.handleEvent, this), this.contentBox);
70
* Removes event handlers that were used during the test.
74
Y.detach(this.handler);
76
this.chart.destroy(true);
83
compareLiveRegionMessages: function(target, key, liveRegion)
85
target.simulate("keydown", {
88
return [liveRegion.get("innerHTML").toString(), this.getLiveRegionMessage(this.result).toString()];
91
//---------------------------------------------------------------------
93
//---------------------------------------------------------------------
96
* Uses to trap and assign the event object for interrogation.
97
* @param {Event} event The event object created from the event.
99
handleEvent : function(event)
104
Y.ChartAriaEventTestCase = ChartAriaEventTestCase;
106
function CartesianChartAriaEventTestCase()
108
CartesianChartAriaEventTestCase.superclass.constructor.apply(this, arguments);
111
Y.extend(CartesianChartAriaEventTestCase, ChartAriaEventTestCase, {
112
testDefault: function()
114
var cb = this.chart.get("contentBox"),
115
dataProvider = this.chart.get("dataProvider"),
116
liveRegion = this.chart._liveRegion,
121
Y.one(cb).simulate("keydown", {
124
Y.Assert.isTrue(liveRegion.get("innerHTML") == this.getLiveRegionMessage(this.result));
127
values = this.compareLiveRegionMessages(target, RIGHT, liveRegion);
128
Y.Assert.isTrue(values[0] == values[1]);
130
Y.one(cb).simulate("keydown", {
133
Y.Assert.isTrue(liveRegion.get("innerHTML") == this.getLiveRegionMessage(this.result));
134
for(i = 0; i < len; ++i)
136
values = this.compareLiveRegionMessages(target, RIGHT, liveRegion);
137
Y.Assert.isTrue(values[0] == values[1]);
139
Y.one(cb).simulate("keydown", {
142
Y.Assert.isTrue(liveRegion.get("innerHTML") == this.getLiveRegionMessage(this.result));
143
for(i = 0; i < len; ++i)
145
values = this.compareLiveRegionMessages(target, RIGHT, liveRegion);
146
Y.Assert.isTrue(values[0] == values[1]);
150
getLiveRegionMessage: function(e) {
151
var key = parseFloat(e.keyCode),
157
seriesIndex = this._seriesIndex,
158
itemIndex = this._itemIndex,
159
seriesCollection = this.chart.get("seriesCollection"),
160
len = seriesCollection.length,
168
seriesIndex = seriesIndex < 1 ? len - 1 : seriesIndex - 1;
172
seriesIndex = seriesIndex >= len - 1 ? 0 : seriesIndex + 1;
174
this._itemIndex = -1;
180
this._seriesIndex = seriesIndex;
181
series = this.chart.getSeries(parseInt(seriesIndex, 10));
182
msg = series.get("valueDisplayName") + " series.";
189
series = this.chart.getSeries(parseInt(seriesIndex, 10));
194
this._seriesIndex = seriesIndex;
195
series = this.chart.getSeries(parseInt(seriesIndex, 10));
196
msg = series.get("valueDisplayName") + " series.";
198
dataLength = series._dataLength ? series._dataLength : 0;
201
itemIndex = itemIndex > 0 ? itemIndex - 1 : dataLength - 1;
202
itemIndex = itemIndex > 0 ? itemIndex - 1 : dataLength - 1;
206
itemIndex = itemIndex >= dataLength - 1 ? 0 : itemIndex + 1;
208
this._itemIndex = itemIndex;
209
items = this.chart.getSeriesItems(series, itemIndex);
210
categoryItem = items.category;
211
valueItem = items.value;
212
if(categoryItem && valueItem && categoryItem.value && valueItem.value)
214
msg += categoryItem.displayName + ": " + categoryItem.axis.formatLabel.apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) + ", ";
215
msg += valueItem.displayName + ": " + valueItem.axis.formatLabel.apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]) + ", ";
219
msg += "No data available.";
221
msg += (itemIndex + 1) + " of " + dataLength + ". ";
226
Y.CartesianChartAriaEventTestCase = CartesianChartAriaEventTestCase;
228
function PieChartAriaEventTestCase()
230
PieChartAriaEventTestCase.superclass.constructor.apply(this, arguments);
233
Y.extend(PieChartAriaEventTestCase, ChartAriaEventTestCase, {
234
testDefault: function()
236
var cb = this.chart.get("contentBox"),
237
dataProvider = this.chart.get("dataProvider"),
238
liveRegion = this.chart._liveRegion,
245
values = this.compareLiveRegionMessages(target, RIGHT, liveRegion);
246
Y.Assert.isTrue(values[0] == values[1]);
248
for(i = len; i > -1; --i)
250
values = this.compareLiveRegionMessages(target, LEFT, liveRegion);
251
Y.Assert.isTrue(values[0] == values[1]);
255
getLiveRegionMessage: function(e) {
256
var key = parseFloat(e.keyCode),
263
itemIndex = this._itemIndex,
264
seriesCollection = this.chart.get("seriesCollection"),
269
series = this.chart.getSeries(parseInt(seriesIndex, 10));
270
markers = series.get("markers");
271
len = markers && markers.length ? markers.length : 0;
274
itemIndex = itemIndex > 0 ? itemIndex - 1 : len - 1;
278
itemIndex = itemIndex >= len - 1 ? 0 : itemIndex + 1;
280
this._itemIndex = itemIndex;
281
items = this.chart.getSeriesItems(series, itemIndex);
282
categoryItem = items.category;
283
valueItem = items.value;
284
total = series.getTotalValues();
285
pct = Math.round((valueItem.value / total) * 10000)/100;
286
if(categoryItem && valueItem)
288
msg += categoryItem.displayName + ": " + categoryItem.axis.formatLabel.apply(this, [categoryItem.value, categoryItem.axis.get("labelFormat")]) + ", ";
289
msg += valueItem.displayName + ": " + valueItem.axis.formatLabel.apply(this, [valueItem.value, valueItem.axis.get("labelFormat")]) + ", ";
290
msg += "Percent of total " + valueItem.displayName + ": " + pct + "%,";
294
msg += "No data available,";
296
msg += (itemIndex + 1) + " of " + len + ". ";
300
Y.PieChartAriaEventTestCase = PieChartAriaEventTestCase;
303
{category:"5/1/2010", values:2000, expenses:3700, revenue:2200},
304
{category:"5/2/2010", values:50, expenses:9100, revenue:100},
305
{category:"5/3/2010", values:400, expenses:1100, revenue:1500},
306
{category:"5/4/2010", values:200, expenses:1900, revenue:2800},
307
{category:"5/5/2010", values:5000, expenses:5000, revenue:2650}
310
{category:"5/1/2010", revenue:2200},
311
{category:"5/2/2010", revenue:100},
312
{category:"5/3/2010", revenue:1500},
313
{category:"5/4/2010", revenue:2800},
314
{category:"5/5/2010", revenue:2650}
316
suite = new Y.Test.Suite("Chart Aria Event Tests"),
317
columnTests = new Y.CartesianChartAriaEventTestCase({
320
dataProvider: DataProvider
322
barTests = new Y.CartesianChartAriaEventTestCase({
325
dataProvider: DataProvider
327
stackedColumnTests = new Y.CartesianChartAriaEventTestCase({
331
dataProvider: DataProvider
333
stackedBarTests = new Y.CartesianChartAriaEventTestCase({
337
dataProvider: DataProvider
339
comboTests = new Y.CartesianChartAriaEventTestCase({
342
dataProvider: DataProvider
344
stackedComboTests = new Y.CartesianChartAriaEventTestCase({
348
dataProvider: DataProvider
350
areaTests = new Y.CartesianChartAriaEventTestCase({
353
dataProvider: DataProvider
355
stackedAreaTests = new Y.CartesianChartAriaEventTestCase({
359
dataProvider: DataProvider
361
splineTests = new Y.CartesianChartAriaEventTestCase({
364
dataProvider: DataProvider
366
stackedSplineTests = new Y.CartesianChartAriaEventTestCase({
370
dataProvider: DataProvider
372
comboSplineTests = new Y.CartesianChartAriaEventTestCase({
375
dataProvider: DataProvider
377
stackedComboSplineTests = new Y.CartesianChartAriaEventTestCase({
381
dataProvider: DataProvider
382
}, "StackedComboSpline"),
383
lineTests = new Y.CartesianChartAriaEventTestCase({
386
dataProvider: DataProvider
388
stackedLineTests = new Y.CartesianChartAriaEventTestCase({
392
dataProvider: DataProvider
394
markerTests = new Y.CartesianChartAriaEventTestCase({
395
type: "markerseries",
397
dataProvider: DataProvider
399
stackedMarkerTests = new Y.CartesianChartAriaEventTestCase({
400
type: "markerseries",
403
dataProvider: DataProvider
405
pieTests = new Y.PieChartAriaEventTestCase({
408
dataProvider: PieDataProvider
411
suite.add(columnTests);
413
suite.add(stackedColumnTests);
414
suite.add(stackedBarTests);
415
suite.add(comboTests);
416
suite.add(stackedComboTests);
417
suite.add(areaTests);
418
suite.add(stackedAreaTests);
419
suite.add(splineTests);
420
suite.add(stackedSplineTests);
421
suite.add(comboSplineTests);
422
suite.add(stackedComboSplineTests);
423
suite.add(lineTests);
424
suite.add(stackedLineTests);
425
suite.add(markerTests);
426
suite.add(stackedMarkerTests);
433
var r = new Y.Console({
440
//add to the testrunner and run
441
Y.Test.Runner.add(Y.Tests.ChartAriaEvents);