*
* @return array
*/
- public abstract function elementInstancesProvider();
+ abstract public function elementInstancesProvider();
/**
* Returns the name of the concrete class being tested.
*
* @return string
*/
- public abstract function getInstanceClass();
+ abstract public function getInstanceClass();
/**
* Provides instances of the concrete class being tested.
* @param GenericArrayObject $list
*/
public function testUnset( GenericArrayObject $list ) {
- if ( !$list->isEmpty() ) {
+ if ( $list->isEmpty() ) {
+ $this->assertTrue( true ); // We cannot test unset if there are no elements
+ } else {
$offset = $list->getIterator()->key();
$count = $list->count();
$list->offsetUnset( $offset );
unset( $list[$offset] );
$this->assertEquals( $count - 1, $list->count() );
}
-
- $exception = null;
- try { $list->offsetUnset( 'sdfsedtgsrdysftu' ); } catch ( \Exception $exception ){}
- $this->assertInstanceOf( '\Exception', $exception );
}
/**
$this->assertEquals( $listSize, $list->count() );
- $this->checkTypeChecks( function( GenericArrayObject $list, $element ) {
+ $this->checkTypeChecks( function ( GenericArrayObject $list, $element ) {
$list->append( $element );
} );
}
$elementClass = $list->getObjectType();
- foreach ( array( 42, 'foo', array(), new \stdClass(), 4.2 ) as $element ) {
+ foreach ( array( 42, 'foo', array(), new stdClass(), 4.2 ) as $element ) {
$validValid = $element instanceof $elementClass;
- try{
+ try {
call_user_func( $function, $list, $element );
$valid = true;
- }
- catch ( InvalidArgumentException $exception ) {
+ } catch ( InvalidArgumentException $exception ) {
$valid = false;
}
$this->assertEquals( count( $elements ), $list->count() );
- $this->checkTypeChecks( function( GenericArrayObject $list, $element ) {
+ $this->checkTypeChecks( function ( GenericArrayObject $list, $element ) {
$list->offsetSet( mt_rand(), $element );
} );
}
+ /**
+ * @dataProvider instanceProvider
+ *
+ * @since 1.21
+ *
+ * @param GenericArrayObject $list
+ */
+ public function testSerialization( GenericArrayObject $list ) {
+ $serialization = serialize( $list );
+ $copy = unserialize( $serialization );
+
+ $this->assertEquals( $serialization, serialize( $copy ) );
+ $this->assertEquals( count( $list ), count( $copy ) );
+
+ $list = $list->getArrayCopy();
+ $copy = $copy->getArrayCopy();
+
+ $this->assertArrayEquals( $list, $copy, true, true );
+ }
+
}