/**
  * @see \qtism\data\storage\xml\marshalling\RecursiveMarshaller::unmarshallChildrenKnown()
  */
 protected function unmarshallChildrenKnown(DOMElement $element, QtiComponentCollection $children)
 {
     if (count($children) > 0) {
         // The first element of $children must be a templateIf.
         $templateIf = $children[0];
         $templateCondition = new TemplateCondition($templateIf);
         if (isset($children[1])) {
             $templateElseIfs = new TemplateElseIfCollection();
             // We have at least one elseIf.
             for ($i = 1; $i < count($children) - 1; $i++) {
                 $templateElseIfs[] = $children[$i];
             }
             $templateCondition->setTemplateElseIfs($templateElseIfs);
             $lastTemplateControl = $children[count($children) - 1];
             if ($lastTemplateControl instanceof TemplateElseIf) {
                 // There is no else.
                 $templateElseIfs[] = $lastTemplateControl;
             } else {
                 // We have an else.
                 $templateCondition->setTemplateElse($lastTemplateControl);
             }
         }
         return $templateCondition;
     } else {
         $msg = "A 'templateCondition' element must contain at least one 'templateIf' element. None given.";
         throw new UnmarshallingException($msg, $element);
     }
 }
 public function testMarshallIfElseMinimal()
 {
     $true = new BaseValue(BaseType::BOOLEAN, true);
     $setTemplateValue = new SetTemplateValue('tpl1', new BaseValue(BaseType::INTEGER, 1337));
     $templateIf = new TemplateIf($true, new TemplateRuleCollection(array($setTemplateValue)));
     $templateCondition = new TemplateCondition($templateIf);
     $setCorrectResponse = new SetCorrectResponse('RESPONSE', new BaseValue(BaseType::IDENTIFIER, 'einstein'));
     $templateElse = new TemplateElse(new TemplateRuleCollection(array($setCorrectResponse)));
     $templateCondition->setTemplateElse($templateElse);
     $element = $this->getMarshallerFactory()->createMarshaller($templateCondition)->marshall($templateCondition);
     $dom = new DOMDocument('1.0', 'UTF-8');
     $element = $dom->importNode($element, true);
     $this->assertEquals('<templateCondition><templateIf><baseValue baseType="boolean">true</baseValue><setTemplateValue identifier="tpl1"><baseValue baseType="integer">1337</baseValue></setTemplateValue></templateIf><templateElse><setCorrectResponse identifier="RESPONSE"><baseValue baseType="identifier">einstein</baseValue></setCorrectResponse></templateElse></templateCondition>', $dom->saveXML($element));
 }