<?php
 namespace MongoDB\Tests\Operation;
 use MongoDB\Driver\BulkWrite;
 use MongoDB\Operation\FindOne;
 class FindOneFunctionalTest extends FunctionalTestCase {
 public function testTypeMapOption(array $typeMap, $expectedDocument) {
 $this->createFixtures(1);
 $operation = new FindOne($this->getDatabaseName(), $this->getCollectionName(), [], ['typeMap' => $typeMap]);
 $document = $operation->execute($this->getPrimaryServer());
 $this->assertEquals($expectedDocument, $document);
 }
 public function provideTypeMapOptionsAndExpectedDocument() {
 return [ [ ['root' => 'array', 'document' => 'array'], ['_id' => 1, 'x' => ['foo' => 'bar']], ], [ ['root' => 'object', 'document' => 'array'], (object) ['_id' => 1, 'x' => ['foo' => 'bar']], ], [ ['root' => 'array', 'document' => 'stdClass'], ['_id' => 1, 'x' => (object) ['foo' => 'bar']], ], ];
 }
 private function createFixtures($n) {
 $bulkWrite = new BulkWrite(['ordered' => true]);
 for ($i = 1;
 $i <= $n;
 $i++) {
 $bulkWrite->insert([ '_id' => $i, 'x' => (object) ['foo' => 'bar'], ]);
 }
 $result = $this->manager->executeBulkWrite($this->getNamespace(), $bulkWrite);
 $this->assertEquals($n, $result->getInsertedCount());
 }
 }
 