/**
     * Unit test for eZContentObject::fetchIDArray()
     *
     * Outline:
     * 1) Create more than 1000 objects
     * 2) Call fetchIDArray() on these object's ids
     * 3) Check that they were all returned
     */
    public function testFetchIDArray()
    {
        $contentObjectIDArray = array();

        $object = new ezpObject( "article", 2 );
        $object->title = __FUNCTION__;
        $object->publish();
        $contentObjectIDArray[] = $object->attribute( 'id' );

        for( $i = 0; $i < 20; $i++ )
        {
            $newObject = $object->copy();
            $contentObjectIDArray[] = $newObject->attribute( 'id' );
        }

        $contentObjects = eZContentObject::fetchIDArray( $contentObjectIDArray );

        // we will store the objects we find in this array
        $matchedContentObjectsIDArray = array();
        foreach( $contentObjectIDArray as $contentObjectID )
        {
            $this->assertArrayHasKey( $contentObjectID, $contentObjects,
                "eZContentObject #{$contentObjectID} should be a key from the return value" );
            $this->assertInstanceOf( 'eZContentObject', $contentObjects[$contentObjectID],
                "Key for eZContentObject #{$contentObjectID} isn't an eZContentObject" );
            $this->assertEquals( $contentObjectID, $contentObjects[$contentObjectID]->attribute( 'id' ),
                "eZContentObject's id for key #{$contentObjectID} doesn't match" );
            $matchedContentObjectsIDArray[] = $contentObjectID;
        }

        // Check that all the objects from the original array were returned
        $this->assertTrue( count( array_diff( $matchedContentObjectsIDArray, $contentObjectIDArray ) ) == 0,
            "Not all objects from original ID array were returned" );
    }