diff --git a/tests/reference_option_limit.test b/tests/reference_option_limit.test
index 0f2eb1b..b97512b 100644
--- a/tests/reference_option_limit.test
+++ b/tests/reference_option_limit.test
@@ -275,25 +275,35 @@ class ReferenceOptionLimitEntityreferenceTestCase extends ReferenceOptionLimitEn
         array(),
         array('Britain'),
       ),
+      // If TRUE, a limited field shows no options if the matching field is
+      // initially empty.
+      'empty_behaviour' => array(
+        FALSE,
+        TRUE,
+      ),
     );
 
     // Work over all the combinations of settings.
     foreach ($ranges['cardinality'] as $cardinality) {
       foreach ($ranges['widget'] as $widget) {
         foreach ($ranges['default'] as $default) {
-          // Make the settings changes to the field and instance.
-          $this->changeFieldSettings(array(
-            'cardinality' => $cardinality,
-            'widget'      => $widget,
-            'default'     => $default,
-          ));
-
-          // Test the functionality.
-          $this->helperTestNodeCreateForm(array(
-            'cardinality' => $cardinality,
-            'widget'      => $widget,
-            'default'     => $default,
-          ));
+          foreach ($ranges['empty_behaviour'] as $empty_behaviour) {
+            // Make the settings changes to the field and instance.
+            $this->changeFieldSettings(array(
+              'cardinality'     => $cardinality,
+              'widget'          => $widget,
+              'default'         => $default,
+              'empty_behaviour' => $empty_behaviour,
+            ));
+
+            // Test the functionality.
+            $this->helperTestNodeCreateForm(array(
+              'cardinality'     => $cardinality,
+              'widget'          => $widget,
+              'default'         => $default,
+              'empty_behaviour' => $empty_behaviour,
+            ));
+          }
         }
       }
     }
@@ -304,19 +314,26 @@ class ReferenceOptionLimitEntityreferenceTestCase extends ReferenceOptionLimitEn
    *
    * @param $settings
    *  An array of settings to apply, with the following properties:
-   *    - 'widget': The widget type to set on the field instance.
-   *    - 'cardinality': The cardinality to set on the field.
-   *    - 'default': The default value to set on the field instance.
+   *    - 'widget': The widget type to set on the matching field instance.
+   *    - 'cardinality': The cardinality to set on the matching field.
+   *    - 'default': The default value to set on the matching field instance.
+   *    - 'empty_behaviour': Whether the limited field shows all options or none
+   *      when the matching field is initially empty.
    */
   function changeFieldSettings($settings) {
-    $field_info = field_info_field('test_rol_er_country');
-    $instance_info = field_info_instance('node', 'test_rol_er_country', 'test_rol_node_article');
+    $country_field_info = field_info_field('test_rol_er_country');
+    $country_instance_info = field_info_instance('node', 'test_rol_er_country', 'test_rol_node_article');
+    $city_instance_info = field_info_instance('node', 'test_rol_er_city', 'test_rol_node_article');
 
     // Set the cardinality on the field.
-    $field_info['cardinality'] = $settings['cardinality'];
+    $country_field_info['cardinality'] = $settings['cardinality'];
 
     // Set the widget type on the instance.
-    $instance_info['widget']['type'] = $settings['widget'];
+    $country_instance_info['widget']['type'] = $settings['widget'];
+
+    // Set the empty default behaviour on the instance of the limited field,
+    // i.e., the city.
+    $city_instance_info['options_limit_empty_behaviour'] = $settings['empty_behaviour'];
 
     // Set the default value on the instance.
     if (empty($settings['default'])) {
@@ -329,10 +346,11 @@ class ReferenceOptionLimitEntityreferenceTestCase extends ReferenceOptionLimitEn
         $default[]['target_id'] = $node->nid;
       }
     }
-    $instance_info['default_value'] = $default;
+    $country_instance_info['default_value'] = $default;
 
-    field_update_field($field_info);
-    field_update_instance($instance_info);
+    field_update_field($country_field_info);
+    field_update_instance($country_instance_info);
+    field_update_instance($city_instance_info);
   }
 
   /**
@@ -350,21 +368,27 @@ class ReferenceOptionLimitEntityreferenceTestCase extends ReferenceOptionLimitEn
    *    - 'default': The default value on the field instance. An array of values
    *      (without the FieldAPI nesting for language and delta). For no default
    *      value, an empty array.
+   *    - 'empty_behaviour': Whether the limited field shows all options (FALSE)
+   *      or none (TRUE) when the matching field is initially empty.
    */
   function helperTestNodeCreateForm($settings) {
     // Sanity check that the field settings are what we expect then to be.
     // This also helps make the test result more readable, as it marks the start
     // of a new round.
-    $instance_info = field_info_instance('node', 'test_rol_er_country', 'test_rol_node_article');
-    $field_info = field_info_field('test_rol_er_country');
+    $country_field_info = field_info_field('test_rol_er_country');
+    $country_instance_info = field_info_instance('node', 'test_rol_er_country', 'test_rol_node_article');
+    $city_instance_info = field_info_instance('node', 'test_rol_er_city', 'test_rol_node_article');
     $this->assertTrue(
-      $instance_info['widget']['type'] == $settings['widget']
+      $country_instance_info['widget']['type'] == $settings['widget']
       &&
-      $field_info['cardinality'] == $settings['cardinality'],
-      format_string("The field settings are correctly set: widget type !widget, cardinality !card, default value !default.", array(
-        '!widget'   => $settings['widget'],
-        '!card'     => ($settings['cardinality'] == FIELD_CARDINALITY_UNLIMITED) ? 'unlimited' : $settings['cardinality'],
-        '!default'  => empty($settings['default']) ? 'none' : implode(', ', $settings['default']),
+      $country_field_info['cardinality'] == $settings['cardinality']
+      &&
+      $city_instance_info['options_limit_empty_behaviour'] == $settings['empty_behaviour'],
+      format_string("The field settings are correctly set: widget type !widget, cardinality !card, default value !default, default value behaviour: !empty-default.", array(
+        '!widget'         => $settings['widget'],
+        '!card'           => ($settings['cardinality'] == FIELD_CARDINALITY_UNLIMITED) ? 'unlimited' : $settings['cardinality'],
+        '!default'        => empty($settings['default']) ? 'none' : implode(', ', $settings['default']),
+        '!empty-default'  => $settings['empty_behaviour'] ? 'hide options for an empty default' : "don't hide options for an empty default",
       ))
     );
 
@@ -374,17 +398,37 @@ class ReferenceOptionLimitEntityreferenceTestCase extends ReferenceOptionLimitEn
     // field. (We can assume that FieldAPI works properly and that the default
     // value is set!)
 
-    // The empty behaviour is not set on the test fields: all cities should be
-    // loaded if the default is empty.
-    $expect_all_cities = empty($settings['default']);
+    // The the empty behaviour determines what should happen to the city field
+    // when the country field default is empty:
+    //  - empty_behaviour TRUE: no city options shown.
+    //  - empty_behaviour FALSE: all city options shown.
+    $expect_no_cities = $expect_all_cities = FALSE;
+    if (empty($settings['default'])) {
+      if ($settings['empty_behaviour']) {
+        $expect_no_cities = TRUE;
+      }
+      else {
+        $expect_all_cities = TRUE;
+      }
+    }
 
     foreach (reference_option_limit_test_entityreference_cities() as $city_name => $country_name) {
-      $country_of_city_in_default = in_array($country_name, $settings['default']);
       // We expect to find the city listed if one of the following holds:
       //  - its country is in the default
       //  - the default is empty, and the empty behaviour is not to limit
       //    options.
-      if ($country_of_city_in_default || $expect_all_cities) {
+      if ($expect_no_cities) {
+        $this->assertNoText($city_name, "The $city_name node was not found in the initial node add form.");
+        continue;
+      }
+
+      if ($expect_all_cities) {
+        $this->assertText($city_name, "The $city_name node was found in the initial node add form.");
+        continue;
+      }
+
+      $country_of_city_in_default = in_array($country_name, $settings['default']);
+      if ($country_of_city_in_default) {
         $this->assertText($city_name, "The $city_name node was found in the initial node add form.");
       }
       else {
