Index: tests/phpunit/tests/functions.php
===================================================================
--- tests/phpunit/tests/functions.php	(revision 39474)
+++ tests/phpunit/tests/functions.php	(working copy)
@@ -161,79 +161,7 @@
 		$this->assertEquals( 'abcdefg.png', wp_unique_filename( $testdir, 'abcde\\\fg.png' ), 'Tripple slashed not removed' );
 	}
 
-	function test_is_serialized() {
-		$cases = array(
-			serialize(null),
-			serialize(true),
-			serialize(false),
-			serialize(-25),
-			serialize(25),
-			serialize(1.1),
-			serialize('this string will be serialized'),
-			serialize("a\nb"),
-			serialize(array()),
-			serialize(array(1,1,2,3,5,8,13)),
-			serialize( (object)array('test' => true, '3', 4) )
-		);
-		foreach ( $cases as $case )
-			$this->assertTrue( is_serialized($case), "Serialized data: $case" );
-
-		$not_serialized = array(
-			'a string',
-			'garbage:a:0:garbage;',
-			's:4:test;'
-		);
-		foreach ( $not_serialized as $case )
-			$this->assertFalse( is_serialized($case), "Test data: $case" );
-	}
-
 	/**
-	 * @ticket 17375
-	 */
-	function test_no_new_serializable_types() {
-		$this->assertFalse( is_serialized( 'C:16:"Serialized_Class":6:{a:0:{}}' ) );
-	}
-
-	/**
-	 * @dataProvider data_is_serialized_string
-	 */
-	public function test_is_serialized_string( $value, $result ) {
-		$this->assertSame( is_serialized_string( $value ), $result );
-	}
-
-	public function data_is_serialized_string() {
-		return array(
-			// Not a string.
-			array( 0, false ),
-
-			// Too short when trimmed.
-			array( 's:3   ', false ),
-
-			// Too short.
-			array( 's:3', false ),
-
-			// No colon in second position.
-			array( 's!3:"foo";', false ),
-
-			// No trailing semicolon.
-			array( 's:3:"foo"', false ),
-
-			// Wrong type.
-			array( 'a:3:"foo";', false ),
-
-			// No closing quote.
-			array( 'a:3:"foo;', false ),
-
-			// Wrong number of characters is close enough for is_serialized_string().
-			array( 's:12:"foo";', true ),
-
-			// Okay.
-			array( 's:3:"foo";', true ),
-
-		);
-	}
-
-	/**
 	 * @group add_query_arg
 	 */
 	function test_add_query_arg() {
Index: tests/phpunit/tests/functions/is-serialized.php
===================================================================
--- tests/phpunit/tests/functions/is-serialized.php	(nonexistent)
+++ tests/phpunit/tests/functions/is-serialized.php	(working copy)
@@ -0,0 +1,68 @@
+<?php
+
+/**
+ * @group functions.php
+ */
+class Tests_Functions_Is_Serialized extends WP_UnitTestCase {
+	public function data_is_serialized() {
+		global $wp;
+
+		return array(
+			array( true, serialize( 'a string' ), 'pass a serialized string' ),
+			array( false, 'a string', 'pass a string' ),
+			array(
+				true,
+				serialize( array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				) ),
+				'pass serialized array',
+			),
+			array(
+				false,
+				array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				),
+				'pass array',
+			),
+			array( true, serialize( $wp ), 'pass a serialized object' ),
+			array( false, $wp, 'pass a object' ),
+			array( true, serialize( true ), 'pass a serialized bool true' ),
+			array( false, true, 'pass a bool' ),
+			array( true, serialize( 99 ), 'pass a serialized int' ),
+			array( false, 99, 'pass a int' ),
+			array( false, 's:3   ', 'Too short when trimmed.'  ),
+			array( false, 's:3', 'Too short' ),
+			array( false,  's!3:"foo";', 'No colon in second position.' ),
+			array( false, 's:3:"foo"', 'No trailing semicolon.' ),
+			array( true, 'a:3:"foo";', 'Wrong type.' ),
+			array( true, 'a:3:"foo;', 'No closing quote.' ),
+			array( true, 's:12:"foo";', 'Wrong number of characters is close enough for is_serialized_string()' ),
+			array( true, 's:3:"foo";', 'Okay' ),
+			array( true, serialize( null ), 'null' ),
+			array( true, serialize(false), 'bool false' ),
+			array( true, serialize(-25), '-25' ),
+			array( true, serialize(1.1), '1.1' ),
+			array( true, serialize( "a\nb" ), '"a\nb"' ),
+			array( true, serialize( (object)array('test' => true, '3', 4) ) , 'null' ),
+			array( false, 'Test data: garbage:a:0:garbage;', ' garbage:a:0:garbage;' ),
+			array( false, 'Test data: a string', '' ),
+			array( false, 'Test data: s:4:test;', '' ),
+			array( false, 'C:16:"Serialized_Class":6:{a:0:{}}', 'class object' ),
+		);
+
+	}
+
+	/**
+	 * @dataProvider data_is_serialized
+	 * @covers ::is_serialized
+	 *
+	 * @param $expected
+	 * @param $data
+	 * @param $message
+	 */
+	public function test_is_serialized( $expected, $data, $message ) {
+		$this->assertEquals( $expected, is_serialized( $data ), $message );
+	}
+}
Index: tests/phpunit/tests/functions/maybe-unserialize.php
===================================================================
--- tests/phpunit/tests/functions/maybe-unserialize.php	(nonexistent)
+++ tests/phpunit/tests/functions/maybe-unserialize.php	(working copy)
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * @group functions.php
+ */
+class Tests_Functions_maybe_unserialize extends WP_UnitTestCase {
+	public function data_maybe_unserialize() {
+		global $wp;
+
+		return array(
+			array( 'a string', serialize( 'a string' ), 'pass a serialized string' ),
+			array( 'a string', 'a string', 'pass a string' ),
+			array(
+				array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				),
+				serialize( array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				) ),
+				'pass serialized array',
+			),
+			array(
+				array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				),
+				array(
+					'start' => 1454803200,
+					'end'   => 1455407999,
+				),
+				'pass array',
+			),
+			array( $wp, serialize( $wp ), 'pass a serialized object' ),
+			array( $wp, $wp, 'pass a object' ),
+			array( true, serialize( true ), 'pass a serialized bool' ),
+			array( true, true, 'pass a bool' ),
+			array( 99, serialize( 99 ), 'pass a serialized int' ),
+			array( 99, 99, 'pass a int' )
+
+		);
+
+	}
+
+	/**
+	 * @dataProvider data_maybe_unserialize
+	 * @covers ::maybe_unserialize
+	 *
+	 * @param $expected
+	 * @param $data
+	 * @param $message
+	 */
+	public function test_maybe_unserialize_pass_serialized( $expected, $data, $message ) {
+		$this->assertEquals( $expected, maybe_unserialize( $data ), $message );
+	}
+}
