From 63beef507c7059d759c72baf43d513d25b843978 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Leif=20=C3=85strand?= Date: Tue, 10 Mar 2015 16:54:55 +0200 Subject: [PATCH] Make Slider.clear() consistent with the no-args contstructor (#17073) Change-Id: I3d5a5b9396bb9449a579b54ed21821415bfdae16 --- server/src/com/vaadin/ui/Slider.java | 10 +++ .../server/component/FieldDefaultValues.java | 84 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 server/tests/src/com/vaadin/tests/server/component/FieldDefaultValues.java diff --git a/server/src/com/vaadin/ui/Slider.java b/server/src/com/vaadin/ui/Slider.java index fab6e33cae..99e1e8d5e9 100644 --- a/server/src/com/vaadin/ui/Slider.java +++ b/server/src/com/vaadin/ui/Slider.java @@ -343,4 +343,14 @@ public class Slider extends AbstractField { return Double.class; } + @Override + public void clear() { + super.setValue(Double.valueOf(getState().minValue)); + } + + @Override + public boolean isEmpty() { + // Slider is never really "empty" + return false; + } } diff --git a/server/tests/src/com/vaadin/tests/server/component/FieldDefaultValues.java b/server/tests/src/com/vaadin/tests/server/component/FieldDefaultValues.java new file mode 100644 index 0000000000..5c9993e6dd --- /dev/null +++ b/server/tests/src/com/vaadin/tests/server/component/FieldDefaultValues.java @@ -0,0 +1,84 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * 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.vaadin.tests.server.component; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Assert; +import org.junit.Test; + +import com.vaadin.tests.VaadinClasses; +import com.vaadin.ui.Field; +import com.vaadin.ui.PasswordField; +import com.vaadin.ui.ProgressBar; +import com.vaadin.ui.RichTextArea; +import com.vaadin.ui.Slider; +import com.vaadin.ui.TextArea; + +public class FieldDefaultValues { + + @Test + public void testFieldsHaveDefaultValueAfterClear() throws Exception { + for (Field field : createFields()) { + Object originalValue = field.getValue(); + + // Some fields are not initialized to the "empty" value. #17089 + if (field instanceof PasswordField || field instanceof ProgressBar + || field instanceof RichTextArea + || field instanceof TextArea) { + originalValue = null; + } + + field.clear(); + + Object clearedValue = field.getValue(); + + Assert.assertEquals("Expected to get default value after clearing " + + field.getClass().getName(), originalValue, clearedValue); + } + } + + @Test + public void testFieldsAreEmptyAfterClear() throws Exception { + for (Field field : createFields()) { + field.clear(); + + if (field instanceof Slider) { + Assert.assertFalse( + "Slider should not be empty even after being cleared", + field.isEmpty()); + + } else { + Assert.assertTrue(field.getClass().getName() + + " should be empty after being cleared", + field.isEmpty()); + } + } + } + + @SuppressWarnings("rawtypes") + private static List> createFields() throws InstantiationException, + IllegalAccessException { + List> fieldInstances = new ArrayList>(); + + for (Class fieldType : VaadinClasses.getFields()) { + fieldInstances.add(fieldType.newInstance()); + } + return fieldInstances; + } + +} -- 2.39.5