'pageToken', 'requestPageSizeField' => 'pageSize', 'responsePageTokenField' => 'nextPageToken', 'resourceField' => 'resource' ]); $mockApiCall = function () use ($stub) { list($response, $status) = call_user_func_array(array($stub, 'takeAction'), func_get_args())->wait(); return $response; }; return new Page([$mockRequest, [], []], $mockApiCall, $descriptor); } public function testFixedCollectionMethods() { $responseA = MockPageStreamingResponse::createPageStreamingResponse( 'nextPageToken1', ['resource1', 'resource2'] ); $responseB = MockPageStreamingResponse::createPageStreamingResponse( 'nextPageToken2', ['resource3', 'resource4', 'resource5'] ); $responseC = MockPageStreamingResponse::createPageStreamingResponse( 'nextPageToken3', ['resource6', 'resource7'] ); $responseD = MockPageStreamingResponse::createPageStreamingResponse( '', ['resource8', 'resource9'] ); $page = FixedSizeCollectionTest::createPage([ [$responseA, new MockStatus(Grpc\STATUS_OK, '')], [$responseB, new MockStatus(Grpc\STATUS_OK, '')], [$responseC, new MockStatus(Grpc\STATUS_OK, '')], [$responseD, new MockStatus(Grpc\STATUS_OK, '')], ]); $fixedSizeCollection = new FixedSizeCollection($page, 5); $this->assertEquals($fixedSizeCollection->getCollectionSize(), 5); $this->assertEquals($fixedSizeCollection->hasNextCollection(), true); $this->assertEquals($fixedSizeCollection->getNextPageToken(), 'nextPageToken2'); $results = iterator_to_array($fixedSizeCollection); $this->assertEquals( $results, ['resource1', 'resource2', 'resource3', 'resource4', 'resource5'] ); $nextCollection = $fixedSizeCollection->getNextCollection(); $this->assertEquals($nextCollection->getCollectionSize(), 4); $this->assertEquals($nextCollection->hasNextCollection(), false); $this->assertEquals($nextCollection->getNextPageToken(), ''); $results = iterator_to_array($nextCollection); $this->assertEquals( $results, ['resource6', 'resource7', 'resource8', 'resource9'] ); } }