public function test_select_fx()
{
$this->mem->del($this->mem->get_keys());
$this->mem->save('key1', array('kk1' => 5, 'kk2' => 7));
$this->mem->save('key2', array('kk1' => 4, 'kk2' => 6));
$this->mem->save('key3', array('kk1' => 5, 'kk2' => 5));
$this->mem->save('key4', array('kk1' => 2, 'kk2' => 4));
$this->mem->save('key5', array('id' => 0, 'kk1' => 6, 'kk2' => 5));
$this->mem->save('key6', array('id' => 1, 'kk1' => 9, 'kk2' => 5));
$this->mem->save('key7', array('id' => 0, 'kk1' => 7, 'kk2' => 4));
$call = $this->mem->select_fx(function ($s, $index) {
if ($index == 'key1' || $s['kk2'] == 7) {
return true;
} else {
return false;
}
});
$this->assertEquals($call, array('kk1' => 5, 'kk2' => 7));
$call = $this->mem->select_fx(function ($s, $index) {
if ($s['kk1'] == $s['kk2']) {
return true;
} else {
return false;
}
});
$this->assertEquals($call, array('kk1' => 5, 'kk2' => 5));
$call = $this->mem->select_fx(function ($s, $index) {
if ($s['kk1'] == $s['kk2'] || $index == 'key4') {
return true;
} else {
return false;
}
}, true);
$this->assertEquals($call, array('key3' => array('kk1' => 5, 'kk2' => 5), 'key4' => array('kk1' => 2, 'kk2' => 4)));
$call = $this->mem->select_fx(function ($s, $index) {
if ($s['kk1'] > 7 || empty($s['id']) && $s['kk2'] < 5) {
return true;
} else {
return false;
}
}, true);
$this->assertEquals($call, array('key4' => array('kk1' => 2, 'kk2' => 4), 'key6' => array('id' => 1, 'kk1' => 9, 'kk2' => 5), 'key7' => array('id' => 0, 'kk1' => 7, 'kk2' => 4)));
}