diff --git a/core/modules/system/tests/form.test b/core/modules/system/tests/form.test
index 8bcce76..6b6b1ec 100644
--- a/core/modules/system/tests/form.test
+++ b/core/modules/system/tests/form.test
@@ -366,6 +366,17 @@ class FormsTestCase extends DrupalWebTestCase {
   }
 
   /**
+   * Test default value handling of #type 'range' elements.
+   */
+  function testRange() {
+    $values = json_decode($this->drupalPost('form-test/range', array(), 'Submit'));
+    $this->assertEqual($values->with_default_value, 18);
+    $this->assertEqual($values->float, 10.5);
+    $this->assertEqual($values->integer, 6);
+    $this->assertEqual($values->offset, 6.9);
+  }
+
+  /**
    * Test handling of disabled elements.
    *
    * @see _form_test_disabled_elements()
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index c727c51..e9687d2 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -145,6 +145,12 @@ function form_test_menu() {
     'page arguments' => array('form_test_number', 'range'),
     'access callback' => TRUE,
   );
+  $items['form-test/range']= array(
+    'title' => 'Range',
+    'page callback' => 'drupal_get_form',
+    'page arguments' => array('form_test_range'),
+    'access callback' => TRUE,
+  );
   $items['form-test/checkboxes-radios'] = array(
     'title' => t('Checkboxes, Radios'),
     'page callback' => 'drupal_get_form',
@@ -1277,6 +1283,60 @@ function form_test_number($form, &$form_state, $element = 'number') {
 }
 
 /**
+ * Form constructor for testing #type 'range' elements.
+ *
+ * @see form_test_range_submit()
+ * @ingroup forms
+ */
+function form_test_range($form, &$form_state) {
+  $form['with_default_value'] = array(
+    '#type' => 'range',
+    '#title' => 'Range with default value',
+    '#min' => 10,
+    '#max' => 20,
+    '#step' => 2,
+    '#default_value' => 18,
+    '#description' => 'The default value is 18.',
+  );
+  $form['float'] = array(
+    '#type' => 'range',
+    '#title' => 'Float',
+    '#min' => 10,
+    '#max' => 11,
+    '#step' => 'any',
+    '#description' => 'Floating point number between 10 and 11.',
+  );
+  $form['integer'] = array(
+    '#type' => 'range',
+    '#title' => 'Integer',
+    '#min' => 2,
+    '#max' => 8,
+    '#step' => 2,
+    '#description' => 'Even integer between 2 and 8.',
+  );
+  $form['offset'] = array(
+    '#type' => 'range',
+    '#title' => 'Offset',
+    '#min' => 2.9,
+    '#max' => 10.9,
+    '#description' => 'Value between 2.9 and 10.9.',
+  );
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => 'Submit',
+  );
+  return $form;
+}
+
+/**
+ * Form submission handler for form_test_range().
+ */
+function form_test_range_submit($form, &$form_state) {
+  drupal_json_output($form_state['values']);
+  exit;
+}
+
+/**
  * Builds a form to test the placeholder attribute.
  */
 function form_test_placeholder_test($form, &$form_state) {
