public function test() { $obj = new multimap(); // 先に0状態でfindチェック $this->assertNull($obj->find('test')); $this->assertIdentical($obj->find_array('test'), array()); $this->assertIdentical($obj->isempty(), true); $this->assertIdentical($obj->size(), 0); $obj->clear(); // データを突っ込む $obj->insert('test-name1', 'test-value1-1'); $obj->insert('test-name1', 'test-value1-2'); $obj->insert('test-name1', 'test-value1-3'); $obj->insert('test-name2', 'test-value2-1'); $obj->insert('test-name2', 'test-value2-2'); $obj->insert('test-name3', 'test-value3-1'); $obj->insert('test', 'test-value'); // $this->assertIdentical($obj->isempty(), false); $this->assertIdentical($obj->size(), 7); // 全部 イテレータでぶんまわし $names = array(); $values = array(); for ($itr = $obj->begin(); $itr != $obj->end(); $itr++) { // 文字列合成 $names[] = $obj->real($itr)->get_first(); $values[] = $obj->real($itr)->get_second(); } //var_dump($names); //var_dump($values); $twk = array_diff($names, array("test-name1", "test-name1", "test-name1", "test-name2", "test-name2", "test-name3", "test")); $this->assertIdentical($twk, array()); $twk = array_diff($values, array("test-value1-1", "test-value1-2", "test-value1-3", "test-value2-1", "test-value2-2", "test-value3-1", "test-value")); $this->assertIdentical($twk, array()); // key指定 $itrs = $obj->find_array('test-name1'); //var_dump($values); $values = array(); foreach ($itrs as $itr) { // 文字列合成 $values[] = $obj->real($itr)->get_second(); } //var_dump($values); $twk = array_diff($values, array("test-value1-1", "test-value1-2", "test-value1-3")); $this->assertIdentical($twk, array()); // 単値 $itr = $obj->find('test'); $this->assertIdentical($obj->real($itr)->get_second(), 'test-value'); // key配列の取得 $keys = $obj->get_all_keys(); $twk = array_diff($keys, array("test-name1", "test-name2", "test-name3", "test")); $this->assertIdentical($twk, array()); //var_dump($keys); // key値指定削除 $obj->erase_key('test-name1'); $ret = $obj->find_array('test-name1'); //var_dump($ret); /* // 等しい系テスト $this->assertIdentical($obj->method(), false); // 配列は「diffって空なら一致」って方向で // この方法は順不同なので一応その辺注意 $awk = 対象になる配列; $twk = array_diff($awk, array("value1-1", "value1-2", "value1-3")); $this->assertIdentical($twk, array()); // NULL系 $this->assertNull($obj->method()); $this->assertNotNull($obj->method()); */ }
<?php require_once 'multimap.inc'; $obj = new multimap(); // データを突っ込む $obj->insert('test-name1', 'test-value1-1'); $obj->insert('test-name1', 'test-value1-2'); $obj->insert('test-name1', 'test-value1-3'); $obj->insert('test-name2', 'test-value2-1'); $obj->insert('test-name2', 'test-value2-2'); $obj->insert('test-name3', 'test-value3-1'); $obj->insert('test', 'test-value'); // 全部 イテレータでぶんまわし $names = array(); $values = array(); for ($itr = $obj->begin(); $itr != $obj->end(); $itr++) { // 文字列合成 $names[] = $obj->real($itr)->get_first(); $values[] = $obj->real($itr)->get_second(); } //var_dump($names); //var_dump($values); // key指定 $values = $obj->find_array('test-name1'); //var_dump($values); // 単値 $s = $obj->find('test'); var_dump($s); $s = $obj->find('test-name1'); var_dump($s);