/* * Copyright 2008 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.user.client.ui; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.junit.client.GWTTestCase; /** * A series of tests to ensure that widgets with a wrap() method properly assert * their element types. */ public class WidgetSubclassingTest extends GWTTestCase { private static final String ASSERTION_ERROR = "Should have received an assertion error trying to use the wrong element type"; @Override public String getModuleName() { return "com.google.gwt.user.UserTest"; } // Correct subclasses. private static class TestAnchor extends Anchor { public TestAnchor() { super(Document.get().createAnchorElement()); } } private static class TestButton extends Button { public TestButton() { super(Document.get().createButtonElement()); } } private static class TestFileUpload extends FileUpload { public TestFileUpload() { super(Document.get().createFileInputElement()); } } private static class TestFormPanel extends FormPanel { public TestFormPanel() { super(Document.get().createFormElement()); } } private static class TestFrame extends Frame { public TestFrame() { super(Document.get().createIFrameElement()); } } private static class TestHidden extends Hidden { public TestHidden() { super(Document.get().createHiddenInputElement()); } } private static class TestHTML extends HTML { public TestHTML() { super(Document.get().createDivElement()); } } private static class TestImage extends Image { public TestImage() { super(Document.get().createImageElement()); } } private static class TestInlineHTML extends InlineHTML { public TestInlineHTML() { super(Document.get().createSpanElement()); } } private static class TestInlineLabel extends InlineLabel { public TestInlineLabel() { super(Document.get().createSpanElement()); } } private static class TestLabel extends Label { public TestLabel() { super(Document.get().createSpanElement()); } } private static class TestListBox extends ListBox { public TestListBox() { super(Document.get().createSelectElement()); } } private static class TestPasswordTextBox extends PasswordTextBox { public TestPasswordTextBox() { super(Document.get().createPasswordInputElement()); } } private static class TestSimpleCheckBox extends SimpleCheckBox { public TestSimpleCheckBox() { super(Document.get().createCheckInputElement()); } } private static class TestSimpleRadioButton extends SimpleRadioButton { public TestSimpleRadioButton() { super(Document.get().createRadioInputElement("group")); } } private static class TestTextBox extends TextBox { public TestTextBox() { super(Document.get().createTextInputElement()); } } // Broken subclasses. private static class BrokenAnchor extends Anchor { public BrokenAnchor() { super(Document.get().createBRElement()); } } private static class BrokenButton extends Button { public BrokenButton() { super(Document.get().createBRElement()); } } private static class BrokenFileUpload extends FileUpload { public BrokenFileUpload() { super(Document.get().createBRElement()); } } private static class BrokenFormPanel extends FormPanel { public BrokenFormPanel() { super(Document.get().createBRElement()); } } private static class BrokenFrame extends Frame { public BrokenFrame() { super(Document.get().createBRElement()); } } private static class BrokenHidden extends Hidden { public BrokenHidden() { super(Document.get().createBRElement()); } } private static class BrokenHTML extends HTML { public BrokenHTML() { super(Document.get().createBRElement()); } } private static class BrokenImage extends Image { public BrokenImage() { super(Document.get().createBRElement()); } } private static class BrokenInlineHTML extends InlineHTML { public BrokenInlineHTML() { super(Document.get().createBRElement()); } } private static class BrokenInlineLabel extends InlineLabel { public BrokenInlineLabel() { super(Document.get().createBRElement()); } } private static class BrokenLabel extends Label { public BrokenLabel() { super(Document.get().createBRElement()); } } private static class BrokenListBox extends ListBox { public BrokenListBox() { super(Document.get().createBRElement()); } } private static class BrokenPasswordTextBox extends PasswordTextBox { public BrokenPasswordTextBox() { super(Document.get().createBRElement()); } } private static class BrokenSimpleCheckBox extends SimpleCheckBox { public BrokenSimpleCheckBox() { super(Document.get().createBRElement()); } } private static class BrokenSimpleRadioButton extends SimpleRadioButton { public BrokenSimpleRadioButton() { super(Document.get().createBRElement()); } } private static class BrokenTextBox extends TextBox { public BrokenTextBox() { super(Document.get().createBRElement()); } } public void testAnchor() { // Make sure the normal case works. new TestAnchor(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenAnchor(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testButton() { // Make sure the normal case works. new TestButton(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenButton(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testFileUpload() { // Make sure the normal case works. new TestFileUpload(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenFileUpload(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testFormPanel() { // Make sure the normal case works. new TestFormPanel(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenFormPanel(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testFrame() { // Make sure the normal case works. new TestFrame(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenFrame(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testHidden() { // Make sure the normal case works. new TestHidden(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenHidden(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testHTML() { // Make sure the normal case works. new TestHTML(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenHTML(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testImage() { // Make sure the normal case works. new TestImage(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenImage(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testInlineHTML() { // Make sure the normal case works. new TestInlineHTML(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenInlineHTML(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testInlineLabel() { // Make sure the normal case works. new TestInlineLabel(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenInlineLabel(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testLabel() { // Make sure the normal case works. new TestLabel(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenLabel(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testListBox() { // Make sure the normal case works. new TestListBox(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenListBox(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testPasswordTextBox() { // Make sure the normal case works. new TestPasswordTextBox(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenPasswordTextBox(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testSimpleCheckBox() { // Make sure the normal case works. new TestSimpleCheckBox(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenSimpleCheckBox(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testSimpleRadioButton() { // Make sure the normal case works. new TestSimpleRadioButton(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenSimpleRadioButton(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } public void testTextBox() { // Make sure the normal case works. new TestTextBox(); // And the wrong element type doesn't. if (!GWT.isScript()) { try { new BrokenTextBox(); fail(ASSERTION_ERROR); } catch (AssertionError e) { } } } }