public function testMultiLevel()
 {
     $formula = new Formula('{{key}} key {{subformula2}} {{subformula1}} {{subformula2}} {{anotherone}}');
     $formula->setSubFormula('subformula1', new Formula('{{key}} and {{sf3}}'));
     $formula->setSubFormula('subformula2', new Formula('{{sf2}}'));
     $formula->setSubFormula('subformula3', new Formula('UNUSED'));
     $formula->setParameter('key', 'VIC');
     $formula->setParameter('value', 'MCKEY');
     $formula->setParameter('sf2', 'valuesf2');
     $formula->setParameter('sf3', 'valuesf3');
     $renderer = new StrtrFormulaRendererModel();
     $this->phpString($renderer->render($formula, $formula->parse()))->isEqualTo('VIC key valuesf2 VIC and valuesf3 valuesf2 {{anotherone}}');
 }
Exemple #2
0
 public function testNotCalculable()
 {
     $formula = new FormulaModel('2 + 1 + {{ sf }} - {{ sf2 }}', false);
     $formula->setRenderer(new StrtrFormulaRenderer());
     $formula->setSubFormula('sf', new FormulaModel('3*10', true));
     $formula->setSubFormula('sf2', new FormulaModel('10-{{sf3}}', false));
     $this->phpString($formula->render())->isEqualTo('2 + 1 + 30 - 10-{{sf3}}');
     $formula->setSubFormula('sf3', new FormulaModel('5-3', true));
     $formula->getSubFormula('sf2')->setIsCalculable(true);
     $this->phpString($formula->render())->isEqualTo('2 + 1 + 30 - 2');
     $formula->setIsCalculable(true);
     $this->phpString($formula->render())->isEqualTo('31');
 }