/** * 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); }