Viewing File: /opt/alt/tests/alt-php84-pecl-leveldb_0.3.0-1.el8/tests/009-comparator.phpt
--TEST--
leveldb - custom comparator
--SKIPIF--
<?php include 'skipif.inc'; ?>
--FILE--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-comparator.test-db';
echo "*** could not use invalid custom comparator ***\n";
try {
$db = new LevelDB($leveldb_path, array('comparator' => 'invaid_func'));
} catch(LevelDBException $e) {
echo $e->getMessage() . "\n";
}
echo "*** valid custom comparator ***\n";
$db = new LevelDB($leveldb_path, array('comparator' => 'custom_comparator'));
$values = array(3, 1, 4, 6, 2, 5);
foreach($values as $v) {
$db->set($v, $v);
}
$it = new LevelDBIterator($db);
foreach($it as $v) {
echo "$v\n";
}
unset($it);
unset($db);
echo "*** custom comparator can only open with the same comparator again ***\n";
try {
$db = new LevelDB($leveldb_path);
} catch(LevelDBException $e) {
echo $e->getMessage() . "\n";
}
$db = new LevelDB($leveldb_path, array('comparator' => 'custom_comparator'));
var_dump($db->get(1) == 1);
unset($db);
echo "*** custom comparator which throw exception ***\n";
$db = new LevelDB($leveldb_path, array('comparator' => array('CustomFunc', 'willException')));
try {
$db->set("Hi", "guys");
var_dump($db->get("Hi"));
} catch(Exception $e) {
echo $e->getMessage() . "\n";
}
// reverse DESC
function custom_comparator($a, $b) {
if ($a == $b) {
return 0;
}
return ($a > $b) ? -1 : 1;
}
class CustomFunc {
public static function willException($a, $b) {
throw new Exception("Oops!");
}
}
?>
==DONE==
--CLEAN--
<?php
$leveldb_path = dirname(__FILE__) . '/leveldb-comparator.test-db';
LevelDB::destroy($leveldb_path);
?>
--EXPECTF--
*** could not use invalid custom comparator ***
Invalid open option: comparator, invaid_func() is not callable
*** valid custom comparator ***
6
5
4
3
2
1
*** custom comparator can only open with the same comparator again ***
Invalid argument: php_leveldb.custom_comparator%s leveldb.BytewiseComparator
bool(true)
*** custom comparator which throw exception ***
Oops!
==DONE==
Back to Directory
File Manager
<