--TEST-- MongoDB\Driver\Session::advanceOperationTime() with TimestampInterface exceptions --SKIPIF-- --FILE-- failIncrement = $failIncrement; $this->failTimestamp = $failTimestamp; } public function getIncrement(): int { if ($this->failIncrement) { throw new Exception('getIncrement() failed'); } return 5678; } public function getTimestamp(): int { if ($this->failTimestamp) { throw new Exception('getTimestamp() failed'); } return 1234; } public function __toString(): string { return sprintf('[%d:%d]', $this->getIncrement(), $this->getTimestamp()); } } $manager = create_test_manager(); $session = $manager->startSession(); echo "Initial operation time of session:\n"; var_dump($session->getOperationTime()); $timestamps = [ new MyTimestamp(true, false), new MyTimestamp(false, true), new MyTimestamp(true, true), ]; foreach ($timestamps as $timestamp) { echo "\n", throws(function() use ($session, $timestamp) { $session->advanceOperationTime($timestamp); }, 'Exception'), "\n"; echo "\nOperation time after advancing session fails:\n"; var_dump($session->getOperationTime()); } ?> ===DONE=== --EXPECT-- Initial operation time of session: NULL OK: Got Exception getIncrement() failed Operation time after advancing session fails: NULL OK: Got Exception getTimestamp() failed Operation time after advancing session fails: NULL OK: Got Exception getTimestamp() failed Operation time after advancing session fails: NULL ===DONE===