public function testAddressing()
 {
     $state = new State();
     $response = new ResponseVariable('RESPONSE', Cardinality::SINGLE, BaseType::INTEGER);
     $score = new OutcomeVariable('SCORE', Cardinality::SINGLE, BaseType::FLOAT);
     $state->setVariable($response);
     $state->setVariable($score);
     $this->assertTrue($state['foo'] === null);
     $this->assertTrue($response === $state->getVariable('RESPONSE'));
     $this->assertTrue($score === $state->getVariable('SCORE'));
     $this->assertTrue(isset($state['SCORE']));
     $this->assertFalse(isset($state['SCOREX']));
 }
 public function testSimple()
 {
     $variableExpr = $this->createComponentFromXml('<variable identifier="var1"/>');
     // single cardinality test.
     $var1 = new OutcomeVariable('var1', Cardinality::SINGLE, BaseType::INTEGER, new Integer(1337));
     $state = new State(array($var1));
     $this->assertInstanceOf('qtism\\runtime\\common\\OutcomeVariable', $state->getVariable('var1'));
     $variableProcessor = new VariableProcessor($variableExpr);
     $this->assertTrue($variableProcessor->process() === null);
     // State is raw.
     $variableProcessor->setState($state);
     // State is populated with var1.
     $result = $variableProcessor->process();
     $this->assertInstanceOf('qtism\\common\\datatypes\\Integer', $result);
     $this->assertEquals(1337, $result->getValue());
     // multiple cardinality test.
     $val = new OrderedContainer(BaseType::INTEGER, array(new Integer(10), new Integer(12)));
     $var2 = new OutcomeVariable('var2', Cardinality::ORDERED, BaseType::INTEGER, $val);
     $state->setVariable($var2);
     $variableExpr = $this->createComponentFromXml('<variable identifier="var2"/>');
     $variableProcessor->setExpression($variableExpr);
     $result = $variableProcessor->process();
     $this->assertInstanceOf('qtism\\runtime\\common\\OrderedContainer', $result);
     $this->assertEquals(10, $result[0]->getValue());
     $this->assertEquals(12, $result[1]->getValue());
 }