summaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java
diff options
context:
space:
mode:
Diffstat (limited to 'uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java')
-rw-r--r--uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java234
1 files changed, 234 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java b/uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java
new file mode 100644
index 0000000000..81ec4a9da4
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/AbstractComponentTestCase.java
@@ -0,0 +1,234 @@
+package com.vaadin.tests.components;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+
+import com.vaadin.server.Resource;
+import com.vaadin.server.ThemeResource;
+import com.vaadin.server.UserError;
+import com.vaadin.ui.AbstractComponent;
+import com.vaadin.ui.Field;
+import com.vaadin.ui.Layout.SpacingHandler;
+
+public abstract class AbstractComponentTestCase<T extends AbstractComponent>
+ extends TestBase {
+
+ protected static final ThemeResource ICON_16_HELP_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/16/help.png");
+ protected static final ThemeResource ICON_16_FOLDER_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/16/folder.png");
+ protected static final ThemeResource ICON_16_ERROR_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/16/error.png");
+ protected static final ThemeResource ICON_16_USER_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/16/user.png");
+ protected static final ThemeResource ICON_16_USER_PNG_UNCACHEABLE = uncacheableThemeResource("../runo/icons/16/user.png");
+ protected static final ThemeResource ICON_32_ATTENTION_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/32/attention.png");
+ protected static final ThemeResource ICON_32_ATTENTION_PNG_UNCACHEABLE = uncacheableThemeResource("../runo/icons/32/attention.png");
+ protected static final ThemeResource ICON_64_EMAIL_REPLY_PNG_CACHEABLE = cacheableThemeResource("../runo/icons/64/email-reply.png");
+ protected static final ThemeResource ICON_64_EMAIL_REPLY_PNG_UNCACHEABLE = uncacheableThemeResource("../runo/icons/64/email-reply.png");
+
+ private List<T> testComponents = new ArrayList<T>();
+
+ abstract protected Class<T> getTestClass();
+
+ protected static ThemeResource uncacheableThemeResource(
+ String resourceLocation) {
+ return new ThemeResource(resourceLocation + "?" + new Date().getTime());
+ }
+
+ protected static ThemeResource cacheableThemeResource(
+ String resourceLocation) {
+ return new ThemeResource(resourceLocation);
+ }
+
+ abstract protected void initializeComponents();
+
+ @Override
+ protected void setup() {
+ ((SpacingHandler) getLayout()).setSpacing(true);
+
+ // Create Components
+ initializeComponents();
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return null;
+ }
+
+ protected void addTestComponent(T c) {
+ testComponents.add(c);
+ addComponent(c);
+ }
+
+ protected List<T> getTestComponents() {
+ return testComponents;
+ }
+
+ public interface Command<T, VALUETYPE extends Object> {
+ public void execute(T c, VALUETYPE value, Object data);
+ }
+
+ /* COMMANDS */
+
+ protected Command<T, String> widthCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T t, String value, Object data) {
+ t.setWidth(value);
+ }
+ };
+ protected Command<T, String> heightCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T t, String value, Object data) {
+ t.setHeight(value);
+ }
+ };
+
+ protected Command<T, Boolean> enabledCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean enabled, Object data) {
+ c.setEnabled(enabled);
+ }
+ };
+
+ protected Command<T, Boolean> immediateCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean immediate, Object data) {
+ c.setImmediate(immediate);
+ }
+ };
+
+ protected Command<T, Boolean> errorIndicatorCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean enabled, Object data) {
+ if (enabled) {
+ c.setComponentError(new UserError(errorMessage));
+ } else {
+ c.setComponentError(null);
+
+ }
+ }
+ };
+ private String errorMessage = null;
+
+ protected Command<T, String> errorMessageCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T c, String value, Object data) {
+ errorMessage = value;
+ if (c.getComponentError() != null) {
+ errorIndicatorCommand.execute(c, true, null);
+ }
+
+ }
+
+ };
+
+ // TODO Move to AbstractFieldTestCase
+ protected Command<T, Boolean> requiredCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean enabled, Object data) {
+ if (c instanceof Field) {
+ ((Field<?>) c).setRequired(enabled);
+ } else {
+ throw new IllegalArgumentException(c.getClass().getName()
+ + " is not a field and cannot be set to required");
+ }
+ }
+ };
+ protected Command<T, String> requiredErrorMessageCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T c, String value, Object data) {
+ ((Field<?>) c).setRequiredError(value);
+ }
+
+ };
+
+ protected Command<T, String> descriptionCommand = new Command<T, String>() {
+ @Override
+ public void execute(T c, String value, Object data) {
+ c.setDescription(value);
+ }
+ };
+
+ protected Command<T, Boolean> readonlyCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean enabled, Object data) {
+ c.setReadOnly(enabled);
+ }
+ };
+
+ protected Command<T, Boolean> visibleCommand = new Command<T, Boolean>() {
+
+ @Override
+ public void execute(T c, Boolean enabled, Object data) {
+ c.setVisible(enabled);
+ }
+ };
+
+ protected Command<T, Resource> iconCommand = new Command<T, Resource>() {
+
+ @Override
+ public void execute(T c, Resource value, Object data) {
+ c.setIcon(value);
+ }
+
+ };
+ protected Command<T, String> captionCommand = new Command<T, String>() {
+
+ @Override
+ public void execute(T c, String value, Object data) {
+ c.setCaption(value);
+ }
+
+ };
+
+ protected Command<T, Locale> localeCommand = new Command<T, Locale>() {
+
+ @Override
+ public void execute(T c, Locale value, Object data) {
+ c.setLocale(value);
+ }
+
+ };
+
+ protected <VALUET> void doCommand(Command<T, VALUET> command, VALUET value) {
+ doCommand(command, value, null);
+ }
+
+ protected <VALUET> void doCommand(Command<T, VALUET> command, VALUET value,
+ Object data) {
+ for (T c : getTestComponents()) {
+ command.execute(c, value, data);
+ }
+ }
+
+ protected <VALUET> void doCommand(String commandName,
+ Command<T, VALUET> command, VALUET value) {
+ doCommand(commandName, command, value, null);
+ }
+
+ protected <VALUET> void doCommand(String commandName,
+ Command<T, VALUET> command, VALUET value, Object data) {
+ doCommand(command, value, data);
+ }
+
+ protected Command<T, String> styleNameCommand = new Command<T, String>() {
+ @Override
+ public void execute(T c, String value, Object data) {
+ c.setStyleName(value);
+ }
+ };
+
+ @Override
+ protected String getDescription() {
+ return "Generic test case for " + getTestClass().getSimpleName();
+ }
+
+}