diff --git a/core/includes/common.inc b/core/includes/common.inc index 3706049d68f..7ee34bbffab 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -451,7 +451,7 @@ function drupal_get_query_array($query) { if (!empty($query)) { foreach (explode('&', $query) as $param) { $param = explode('=', $param); - $result[$param[0]] = isset($param[1]) ? rawurldecode($param[1]) : ''; + $result[$param[0]] = isset($param[1]) ? rawurldecode($param[1]) : NULL; } } return $result; diff --git a/core/modules/system/tests/common.test b/core/modules/system/tests/common.test index 15286b6b880..6a0b8a23d36 100644 --- a/core/modules/system/tests/common.test +++ b/core/modules/system/tests/common.test @@ -76,7 +76,7 @@ class CommonDrupalAlterTestCase extends WebTestBase { * url() calls module_implements(), which may issue a db query, which requires * inheriting from a web test case rather than a unit test case. */ -class CommonURLUnitTestCase extends WebTestBase { +class CommonURLWebTestCase extends WebTestBase { public static function getInfo() { return array( 'name' => 'URL generation tests', @@ -280,6 +280,32 @@ class CommonURLUnitTestCase extends WebTestBase { } } +/** + * Tests for non-DB based URL generation functions. + */ +class CommonUrlUnitTestCase extends UnitTestBase { + + public static function getInfo() { + return array( + 'name' => 'URL generation tests', + 'description' => 'Confirm that drupal_get_query_array() works correctly with various input.', + 'group' => 'Common', + ); + } + + /** + * Tests drupal_get_query_array(). + */ + function testDrupalGetQueryArray() { + $this->assertEqual(drupal_get_query_array('foo=bar'), array('foo' => 'bar'), 'Simple value works as expected.'); + $this->assertEqual(drupal_get_query_array('foo=1'), array('foo' => '1'), 'Numeric value works as expected.'); + $this->assertEqual(drupal_get_query_array('foo=1&bar=baz'), array('foo' => '1', 'bar' => 'baz'), 'Multiple values are parsed as well.'); + $this->assertEqual(drupal_get_query_array('foo='), array('foo' => ''), 'An empty value is set as an empty string.'); + $this->assertEqual(drupal_get_query_array('foo'), array('foo' => NULL), 'No value is set as a null value.'); + } + +} + /** * Tests for check_plain(), filter_xss(), format_string(), and check_url(). */