/* * Copyright 2011 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.cell.client; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; /** * Bases tests for subclasses if {@link ButtonCellBase}. * * @param <T> the cell type */ public abstract class ButtonCellTestBase<T> extends CellTestBase<T> { public void testOnBrowserEvent() { NativeEvent event = Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false); T value = createCellValue(); testOnBrowserEvent(getExpectedInnerHtml(), event, value, value); } /** * Test that events outside of the button element are ignored. */ public void testOnBrowserEventOutsideButton() { NativeEvent event = Document.get().createClickEvent(0, 0, 0, 0, 0, false, false, false, false); testOnBrowserEvent(createCell(), getExpectedInnerHtml(), event, createCellValue(), null, false); } public void testRenderAccessKey() { // No access key by default. ButtonCellBase<T> cell = createCell(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertFalse(sb.toSafeHtml().asString().contains("accessKey")); // Set access key to safe value. cell.setAccessKey('a'); assertEquals('a', cell.getAccessKey()); sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertTrue(sb.toSafeHtml().asString().contains("accessKey=\"a\"")); // Set access key to unsafe value. cell.setAccessKey('<'); assertEquals('<', cell.getAccessKey()); sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertFalse(sb.toSafeHtml().asString().contains("accessKey=\"<\"")); assertTrue(sb.toSafeHtml().asString().contains("accessKey=\"<\"")); } public void testRenderDisabled() { // Default is enabled. ButtonCellBase<T> cell = createCell(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertFalse(sb.toSafeHtml().asString().contains("disabled")); // Set tab index to 0. cell.setEnabled(false); assertFalse(cell.isEnabled()); sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertTrue(sb.toSafeHtml().asString().contains("disabled=disabled")); } public void testRenderIcon() { ButtonCellBase<T> cell = createCell(); cell.setIcon(Resources.prettyPiccy()); SafeHtmlBuilder sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertTrue(sb.toSafeHtml().asString().contains("img")); } public void testRenderTabIndex() { // Default tab index is -1. ButtonCellBase<T> cell = createCell(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertTrue(sb.toSafeHtml().asString().contains("tabindex=\"-1\"")); // Set tab index to 0. cell.setTabIndex(0); assertEquals(0, cell.getTabIndex()); sb = new SafeHtmlBuilder(); cell.render(null, null, sb); assertTrue(sb.toSafeHtml().asString().contains("tabindex=\"0\"")); } @Override protected abstract ButtonCellBase<T> createCell(); @Override protected boolean dependsOnSelection() { return false; } @Override protected String[] getConsumedEvents() { return new String[]{"click", "keydown", "mousedown"}; } }