| /* |
| * Copyright 2012 Google Inc. |
| * |
| * 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. |
| */ |
| |
| package com.google.gwt.aria.client; |
| |
| import com.google.gwt.dom.client.AnchorElement; |
| import com.google.gwt.dom.client.Document; |
| import com.google.gwt.dom.client.Element; |
| import com.google.gwt.junit.client.GWTTestCase; |
| |
| /** |
| * Tests generic role methods implemented in {@link RoleImpl}. |
| */ |
| public class RoleImplTest extends GWTTestCase { |
| private Element div; |
| private RegionRole regionRole; |
| |
| public void testSetGetRemoveRole() { |
| assertEquals(null, Roles.roleOf(div)); |
| regionRole.set(div); |
| assertEquals(regionRole, Roles.roleOf(div)); |
| regionRole.remove(div); |
| assertEquals(null, Roles.roleOf(div)); |
| div.setAttribute("role", "region fallback1 fallback2"); |
| assertEquals(regionRole, Roles.roleOf(div)); |
| div.setAttribute("role", "fallback1 region fallback2"); |
| assertEquals(regionRole, Roles.roleOf(div)); |
| div.setAttribute("role", "fallback1 fallback2 fallback3"); |
| assertEquals(null, Roles.roleOf(div)); |
| } |
| |
| public void testSetGetRemoveProperty() { |
| assertEquals("", regionRole.getAriaLabelledbyProperty(div)); |
| regionRole.setAriaLabelledbyProperty(div, Id.of("test1")); |
| assertEquals("test1", regionRole.getAriaLabelledbyProperty(div)); |
| regionRole.removeAriaLabelledbyProperty(div); |
| assertEquals("", regionRole.getAriaLabelledbyProperty(div)); |
| } |
| |
| public void testSetGetRemoveNmtokensProperty() { |
| ButtonRole buttonRole = Roles.getButtonRole(); |
| assertEquals("", buttonRole.getAriaDropeffectProperty(div)); |
| regionRole.setAriaDropeffectProperty(div, DropeffectValue.COPY, DropeffectValue.MOVE); |
| assertEquals("copy move", regionRole.getAriaDropeffectProperty(div)); |
| regionRole.removeAriaDropeffectProperty(div); |
| assertEquals("", regionRole.getAriaDropeffectProperty(div)); |
| } |
| |
| public void testSetGetRemoveState() { |
| assertEquals("", regionRole.getAriaInvalidState(div)); |
| regionRole.setAriaInvalidState(div, InvalidValue.GRAMMAR); |
| assertEquals(InvalidValue.GRAMMAR.getAriaValue(), |
| regionRole.getAriaInvalidState(div)); |
| regionRole.removeAriaInvalidState(div); |
| assertEquals("", regionRole.getAriaInvalidState(div)); |
| } |
| |
| public void testSetGetRemoveExtraAttributes() { |
| // Older versions of IE do not support tabIndex on divs, so use an anchor |
| // element instead. |
| AnchorElement anchor = Document.get().createAnchorElement(); |
| Document.get().getBody().appendChild(anchor); |
| |
| // Some versions of IE default to "0" instead of "" |
| assertTrue("".equals(regionRole.getTabindexExtraAttribute(div)) |
| || "0".equals(regionRole.getTabindexExtraAttribute(div))); |
| regionRole.setTabindexExtraAttribute(anchor, 1); |
| assertEquals("1", regionRole.getTabindexExtraAttribute(anchor)); |
| regionRole.removeTabindexExtraAttribute(anchor); |
| // Some versions of IE default to "0" instead of "" |
| assertTrue("".equals(regionRole.getTabindexExtraAttribute(div)) |
| || "0".equals(regionRole.getTabindexExtraAttribute(div))); |
| |
| anchor.removeFromParent(); |
| } |
| |
| @Override |
| public String getModuleName() { |
| return "com.google.gwt.aria.Aria"; |
| } |
| |
| @Override |
| protected void gwtSetUp() throws Exception { |
| super.gwtSetUp(); |
| div = Document.get().createDivElement(); |
| div.setAttribute("id", "test1"); |
| Document.get().getBody().appendChild(div); |
| regionRole = Roles.getRegionRole(); |
| } |
| |
| @Override |
| protected void gwtTearDown() throws Exception { |
| super.gwtTearDown(); |
| div.removeFromParent(); |
| } |
| } |