123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // Copyright 2012 The Closure Library Authors. All Rights Reserved.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS-IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- goog.provide('goog.ui.PaletteRendererTest');
- goog.setTestOnly('goog.ui.PaletteRendererTest');
- goog.require('goog.a11y.aria');
- goog.require('goog.a11y.aria.Role');
- goog.require('goog.a11y.aria.State');
- goog.require('goog.array');
- goog.require('goog.dom');
- goog.require('goog.dom.TagName');
- goog.require('goog.html.testing');
- goog.require('goog.testing.jsunit');
- goog.require('goog.ui.Palette');
- goog.require('goog.ui.PaletteRenderer');
- var sandbox;
- var items = [
- '<div aria-label="label-0"></div>', '<div title="title-1"></div>',
- '<div aria-label="label-2" title="title-2"></div>',
- '<div><span title="child-title-3"></span></div>'
- ];
- var itemEls;
- var renderer;
- var palette;
- function setUp() {
- sandbox = goog.dom.getElement('sandbox');
- itemEls = goog.array.map(items, function(item, index, a) {
- return goog.dom.safeHtmlToNode(goog.html.testing.newSafeHtmlForTest(item));
- });
- renderer = new goog.ui.PaletteRenderer();
- palette = new goog.ui.Palette(itemEls, renderer);
- palette.setSize(4, 1);
- }
- function tearDown() {
- palette.dispose();
- }
- function testGridA11yRoles() {
- var grid = renderer.createDom(palette);
- assertEquals(goog.a11y.aria.Role.GRID, goog.a11y.aria.getRole(grid));
- var table = goog.dom.getElementsByTagName(goog.dom.TagName.TABLE, grid)[0];
- var row = goog.dom.getElementsByTagName(goog.dom.TagName.TR, table)[0];
- assertEquals(goog.a11y.aria.Role.ROW, goog.a11y.aria.getRole(row));
- var cell = goog.dom.getElementsByTagName(goog.dom.TagName.TD, row)[0];
- assertEquals(goog.a11y.aria.Role.GRIDCELL, goog.a11y.aria.getRole(cell));
- }
- function testCellA11yLabels() {
- var grid = renderer.createDom(palette);
- var cells = goog.dom.getElementsByTagName(goog.dom.TagName.TD, grid);
- assertEquals(
- 'An aria-label is used as a label', 'label-0',
- goog.a11y.aria.getLabel(cells[0]));
- assertEquals(
- 'A title is used as a label', 'title-1',
- goog.a11y.aria.getLabel(cells[1]));
- assertEquals(
- 'An aria-label takes precedence over a title', 'label-2',
- goog.a11y.aria.getLabel(cells[2]));
- assertEquals(
- 'Children are traversed to find labels', 'child-title-3',
- goog.a11y.aria.getLabel(cells[3]));
- }
- function testA11yActiveDescendant() {
- palette.render();
- var cells = goog.dom.getElementsByTagName(
- goog.dom.TagName.TD, palette.getElementStrict());
- renderer.highlightCell(palette, cells[1].firstChild, true);
- assertEquals(
- cells[1].id,
- goog.a11y.aria.getState(
- palette.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT));
- renderer.highlightCell(palette, cells[0].firstChild, false);
- assertEquals(
- cells[1].id,
- goog.a11y.aria.getState(
- palette.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT));
- renderer.highlightCell(palette, cells[1].firstChild, false);
- assertNotEquals(
- cells[1].id,
- goog.a11y.aria.getState(
- palette.getElementStrict(), goog.a11y.aria.State.ACTIVEDESCENDANT));
- }
|