Esempio n. 1
0
 /**
  * Flattens a trie structure to matrix
  *
  * @version 1.0
  * @since 1.0
  *
  * @param array $trie | Trie structure
  * @param array $columns | Array of column names
  * @param array $ctrl | Control args
  * 
  * @return array | Exception on failure. Flattened trie structure on success.
  */
 public static function flattenAssocTrie($trie, $columns, $ctrl)
 {
     try {
         $cls = new FOX_trie_flatten($trie, $columns, $ctrl);
     } catch (FOX_exception $child) {
         throw new FOX_exception(array('numeric' => 1, 'text' => "Error creating iterator object", 'file' => __FILE__, 'class' => __CLASS__, 'function' => __FUNCTION__, 'line' => __LINE__, 'child' => $child));
     }
     try {
         $result = $cls->render();
     } catch (FOX_exception $child) {
         throw new FOX_exception(array('numeric' => 2, 'text' => "Error rendering to array", 'file' => __FILE__, 'class' => __CLASS__, 'function' => __FUNCTION__, 'line' => __LINE__, 'child' => $child));
     }
     return $result;
 }
 function test_trie_flatten_16()
 {
     $columns = array("C1", "C2", "C3", "C4", "C5");
     $trie = array('A' => array('G' => true), 'T' => true, 'K' => array('*' => array('*' => array('K' => array('W' => true))), 'Y' => array('K' => array('K' => array('K' => true)))), '*' => array('X' => array('*' => array('*' => array('*' => true, 'T' => true), 'Z' => array('*' => true), 'K' => array('K' => true))), 'Y' => array('*' => true, 'K' => array('K' => array('W' => true), 'T' => array('T' => true)), 'Z' => array('Z' => array('Z' => true)))));
     try {
         $cls = new FOX_trie_flatten($trie, $columns, $ctrl = null);
     } catch (FOX_exception $child) {
         $this->fail($child->dumpString(1));
     }
     try {
         $result = $cls->render();
     } catch (FOX_exception $child) {
         $this->fail($child->dumpString(1));
     }
     $check = array(array("C1" => "A", "C2" => "G"), array("C1" => "T"), array("C1" => "K", "C4" => "K", "C5" => "W"), array("C1" => "K", "C2" => "Y", "C3" => "K", "C4" => "K", "C5" => "K"), array("C2" => "X"), array("C2" => "X", "C5" => "T"), array("C2" => "X", "C4" => "Z"), array("C2" => "X", "C4" => "K", "C5" => "K"), array("C2" => "Y"), array("C2" => "Y", "C3" => "K", "C4" => "K", "C5" => "W"), array("C2" => "Y", "C3" => "K", "C4" => "T", "C5" => "T"), array("C2" => "Y", "C3" => "Z", "C4" => "Z", "C5" => "Z"));
     $this->assertEquals($check, $result);
 }