function testBinary($cnx, $values, $type, $options = array(), $msg = '') { echo '==================================' . CLI_EOL; echo 'Test ' . $type . ' ' . $msg . CLI_EOL; $tt = strtolower($type); $rexp = create_REXP($values, $type, $options); $bin = Rserve_Parser::createBinary($rexp); //var_dump($bin); $i = 0; echo "Debug REXP" . CLI_EOL; var_dump(Rserve_Parser::parseDebug($bin, $i)); $i = 0; echo "binary to REXP" . CLI_EOL; $r2 = Rserve_Parser::parseREXP($bin, $i); var_dump($r2); $cn2 = get_class($r2); $cn = get_class($rexp); if (strtolower($cn2) != strtolower($cn)) { echo 'Differentes classes' . CLI_EOL; return FALSE; } else { echo 'Class Type ok' . CLI_EOL; } $r = $cnx->assign('x', $rexp); if ($r['is_error']) { echo $cnx->getErrorMessage($r['error']); } else { echo "OK"; } echo CLI_EOL; echo "Check R object" . CLI_EOL; $r = $cnx->evalString('x'); var_dump($r); }
function testBinary($values, $type, $options = array(), $msg = '') { echo 'Test ' . $type . ' ' . $msg . '<br/>'; $cn = 'Rserve_REXP_' . $type; $r = new $cn(); $tt = strtolower($type); if (is_subclass_of($r, 'Rserve_REXP_Vector')) { if (is_subclass_of($r, 'Rserve_REXP_List') and @$options['named']) { $r->setValues($values, TRUE); } else { $r->setValues($values); } } else { $r->setValue($values); } $bin = Rserve_Parser::createBinary($r); var_dump(Rserve_Parser::parseDebug($bin, 0)); $r2 = Rserve_Parser::parseREXP($bin, 0); var_dump($r2); $cn2 = get_class($r2); if (strtolower($cn2) != strtolower($cn)) { echo 'Differentes classes'; return FALSE; } else { echo 'Class Type ok'; } }
/** * @dataProvider providerTestParser * @param unknown_type $type * @param unknown_type $values */ public function testParser($type, $values) { $rexp = $this->create_REXP($values, $type); $bin = Rserve_Parser::createBinary($rexp); $r2 = Rserve_Parser::parseREXP($bin, $i); $this->assertEquals(get_class($rexp), get_class($r2)); $this->assertEquals($rexp->getValues(), $r2->getValues()); }
/** * Assign a value to a symbol in R * @param string $symbol name of the variable to set (should be compliant with R syntax !) * @param Rserve_REXP $value value to set */ public function assign($symbol, Rserve_REXP $value) { $symbol = (string) $symbol; $data = _rserve_make_data(self::DT_STRING, $symbol); $bin = Rserve_Parser::createBinary($value); $data .= _rserve_make_data(self::DT_SEXP, $bin); $r = $this->sendCommand(self::CMD_assignSEXP, $data); return $r; }