public function testSetLastModified()
 {
     $instance = new SemanticData(new DIWikiPage('Foo', NS_MAIN));
     $instance->setLastModified(1001);
     $this->assertEquals(1001, $instance->getLastModified());
 }
 /**
  * Add data about subobjects.
  * Will only work if the data that is added is about a subobject of
  * this SMWSemanticData's subject. Otherwise an exception is thrown.
  * The SMWSemanticData object that is given will belong to this object
  * after the operation; it should not be modified further by the caller.
  *
  * @since 1.8
  *
  * @param SemanticData $semanticData
  *
  * @throws MWException if not adding data about a subobject of this data
  */
 public function addSubSemanticData(SemanticData $semanticData)
 {
     $semanticData->setLastModified($this->getLastModified());
     $this->hash = null;
     if ($this->subContainerDepthCounter > $this->subContainerMaxDepth) {
         throw new MWException("Cannot add further subdata. You are trying to add data beyond the max depth of {$this->subContainerMaxDepth} to an SemanticData object.");
     }
     $subobjectName = $semanticData->getSubject()->getSubobjectName();
     if ($subobjectName == '') {
         throw new MWException("Cannot add data that is not about a subobject.");
     }
     if ($semanticData->getSubject()->getDBkey() !== $this->getSubject()->getDBkey()) {
         throw new MWException("Data for a subobject of {$semanticData->getSubject()->getDBkey()} cannot be added to {$this->getSubject()->getDBkey()}.");
     }
     if ($this->hasSubSemanticData($subobjectName)) {
         $this->subSemanticData[$subobjectName]->importDataFrom($semanticData);
         foreach ($semanticData->getSubSemanticData() as $subsubdata) {
             $this->addSubSemanticData($subsubdata);
         }
     } else {
         $semanticData->subContainerDepthCounter++;
         foreach ($semanticData->getSubSemanticData() as $subsubdata) {
             // Skip container that are known to be registered (avoids recursive statement extension)
             if ($this->hasSubSemanticData($subsubdata->getSubject()->getSubobjectName())) {
                 continue;
             }
             $this->addSubSemanticData($subsubdata);
         }
         $semanticData->subSemanticData = array();
         $this->subSemanticData[$subobjectName] = $semanticData;
     }
 }