public function testWriteAssessmentItemSession()
 {
     $doc = new XmlCompactDocument();
     $doc->load(self::samplesDir() . 'custom/runtime/itemsubset.xml');
     $seeker = new AssessmentTestSeeker($doc->getDocumentComponent(), array('assessmentItemRef', 'outcomeDeclaration', 'responseDeclaration', 'itemSessionControl'));
     $stream = new MemoryStream();
     $stream->open();
     $access = new QtiBinaryStreamAccessFsFile($stream);
     $session = new AssessmentItemSession($doc->getDocumentComponent()->getComponentByIdentifier('Q02'), new SessionManager());
     $session->beginItemSession();
     $access->writeAssessmentItemSession($seeker, $session);
     $stream->rewind();
     $session = $access->readAssessmentItemSession(new SessionManager(), $seeker);
     $this->assertEquals(AssessmentItemSessionState::INITIAL, $session->getState());
     $this->assertEquals(NavigationMode::LINEAR, $session->getNavigationMode());
     $this->assertEquals(SubmissionMode::INDIVIDUAL, $session->getSubmissionMode());
     $this->assertEquals('PT0S', $session['duration']->__toString());
     $this->assertEquals(0, $session['numAttempts']->getValue());
     $this->assertEquals('not_attempted', $session['completionStatus']->getValue());
     $this->assertFalse($session->isAttempting());
     $this->assertEquals(0.0, $session['SCORE']->getValue());
     $this->assertTrue($session['RESPONSE']->equals(new MultipleContainer(BaseType::PAIR)));
 }