Index: wp-testcase/test_user.php
===================================================================
--- wp-testcase/test_user.php	(revision 18)
+++ wp-testcase/test_user.php	(revision 19)
@@ -91,4 +91,42 @@
 	}
 
+	// test usermeta functions in array mode
+	function test_usermeta_array() {
+
+		// some values to set
+		$vals = array(
+			rand_str() => 'val-'.rand_str(),
+			rand_str() => 'val-'.rand_str(),
+			rand_str() => 'val-'.rand_str(),
+		);
+
+		$user_id = $this->_make_user('author');
+
+		// there is already some stuff in the array
+		$this->assertTrue(is_array(get_usermeta($user_id)));
+		
+		foreach ($vals as $k=>$v)
+			update_usermeta( $user_id, $k, $v );
+		
+		// get the complete usermeta array
+		$out = get_usermeta($user_id);
+		
+		// for reasons unclear, the resulting array is indexed numerically; meta keys are not included anywhere.
+		// so we'll just check to make sure our values are included somewhere.
+		foreach ($vals as $v)
+			$this->assertTrue(in_array($v, $out));
+			
+		// delete one key and check again
+		$key_to_delete = array_pop(array_keys($vals));
+		delete_usermeta($user_id, $key_to_delete);
+		$out = get_usermeta($user_id);
+		// make sure that key is excluded from the results
+		foreach ($vals as $k=>$v) {
+			if ($k == $key_to_delete)
+				$this->assertFalse(in_array($v, $out));
+			else
+				$this->assertTrue(in_array($v, $out));
+		}
+	}
 }
 
