Perl-UnQLite/t/02_cursor.t
2013-07-04 04:01:54 +09:00

63 lines
1.4 KiB
Perl

use strict;
use Test::More;
use File::Temp qw(tempdir);
use UnQLite;
my $tmp = tempdir( CLEANUP => 1 );
my $db = UnQLite->open("$tmp/foo.db");
{
isa_ok($db, 'UnQLite');
ok($db->kv_store("foo", "bar"));
ok($db->kv_store("hoge", "fuga"));
}
{
my $cursor = $db->cursor_init();
$cursor->first_entry;
is($cursor->valid_entry(), 1);
is($cursor->key(), 'hoge');
is($cursor->data(), 'fuga');
ok($cursor->next_entry());
is($cursor->valid_entry(), 1);
is($cursor->key(), 'foo');
is($cursor->data(), 'bar');
ok(!$cursor->next_entry());
is($cursor->valid_entry(), 0);
}
{
my $cursor = $db->cursor_init();
my @ret;
for ($cursor->first_entry; $cursor->valid_entry; $cursor->next_entry) {
push @ret, $cursor->key(), $cursor->data()
}
is_deeply(\@ret, [qw(hoge fuga foo bar)]);
}
{
my $cursor = $db->cursor_init();
$cursor->last_entry;
is($cursor->valid_entry(), 1);
is($cursor->key(), 'foo');
is($cursor->data(), 'bar');
ok($cursor->prev_entry());
is($cursor->valid_entry(), 1);
is($cursor->key(), 'hoge');
is($cursor->data(), 'fuga');
ok(!$cursor->prev_entry());
is($cursor->valid_entry(), 0);
}
{
my $cursor = $db->cursor_init();
ok(!$cursor->seek("NON EXISTENT"));
ok($cursor->seek("foo"));
is($cursor->valid_entry(), 1);
$cursor->delete_entry();
}
done_testing;