Index: tests/phpunit/tests/formatting/wp_slash.php
===================================================================
--- tests/phpunit/tests/formatting/wp_slash.php	(revision 0)
+++ tests/phpunit/tests/formatting/wp_slash.php	(working copy)
@@ -0,0 +1,42 @@
+<?php
+
+/**
+ * @group formatting
+ */
+class Tests_Formatting_WP_Slash extends WP_UnitTestCase {
+	/**
+ 	 * @ticket 24106
+	 */
+	function test_preserves_original_datatype() {
+
+		$this->assertEquals( true, wp_slash( true ) );
+		$this->assertEquals( false, wp_slash( false ) );
+		$this->assertEquals( 4, wp_slash( 4 ) );
+		$this->assertEquals( 'foo', wp_slash( 'foo' ) );
+		$arr = array( 'a' => true, 'b' => false, 'c' => 4, 'd' => 'foo' );
+		$arr['e'] = $arr; // Add a sub-array
+		$this->assertEquals( $arr, wp_slash( $arr ) ); // Keyed array
+		$this->assertEquals( array_values( $arr ), wp_slash( array_values( $arr ) ) ); // Non-keyed
+
+		$obj = new stdClass;
+		foreach ( $arr as $k => $v ) {
+			$obj->$k = $v;
+		}
+		$this->assertEquals( $obj, wp_slash( $obj ) );
+	}
+
+	function test_adds_slashes() {
+		$old = 'single\\slash double\\\\slash triple\\\\\\slash';
+		$new = 'single\\\\slash double\\\\\\\\slash triple\\\\\\\\\\\\slash';
+		$this->assertEquals( $new, wp_slash( $old ) );
+		$this->assertEquals( array( 'a' => $new ), wp_slash( array( 'a' => $old ) ) ); // Keyed array
+		$this->assertEquals( array( $new ), wp_slash( array( $old ) ) ); // Non-keyed
+
+		$obj_old = new stdClass;
+		$obj_old->a = $old;
+		$obj_new = new stdClass;
+		$obj_new->a = $new;
+		$this->assertEquals( $obj_new, wp_slash( $obj_old ) );
+	}
+
+}
