Commit | Line | Data |
ffed8b01 |
1 | ## |
2 | # DBM::Deep Test |
3 | ## |
4 | use strict; |
5 | use Test::More tests => 17; |
6 | |
7 | use_ok( 'DBM::Deep' ); |
8 | |
9 | unlink "t/test.db"; |
10 | my $db = DBM::Deep->new( |
11 | file => "t/test.db", |
12 | ); |
13 | if ($db->error()) { |
14 | die "ERROR: " . $db->error(); |
15 | } |
16 | |
17 | ok( !$db->set_filter( 'floober', sub {} ), "floober isn't a value filter key" ); |
18 | |
19 | ## |
20 | # First try store filters only (values will be unfiltered) |
21 | ## |
22 | ok( $db->set_filter( 'store_key', \&my_filter_store_key ), "set the store_key filter" ); |
23 | ok( $db->set_filter( 'store_value', \&my_filter_store_value ), "set the store_value filter" ); |
24 | |
25 | $db->{key1} = "value1"; |
26 | $db->{key2} = "value2"; |
27 | |
28 | is($db->{key1}, "MYFILTERvalue1", "The value for key1 was filtered correctly" ); |
29 | is($db->{key2}, "MYFILTERvalue2", "The value for key2 was filtered correctly" ); |
30 | |
31 | ## |
32 | # Now try fetch filters as well |
33 | ## |
34 | ok( $db->set_filter( 'fetch_key', \&my_filter_fetch_key ), "Set the fetch_key filter" ); |
35 | ok( $db->set_filter( 'fetch_value', \&my_filter_fetch_value), "Set the fetch_value filter" ); |
36 | |
37 | is($db->{key1}, "value1", "Fetchfilters worked right"); |
38 | is($db->{key2}, "value2", "Fetchfilters worked right"); |
39 | |
40 | ## |
41 | # Try fetching keys as well as values |
42 | ## |
43 | my $first_key = $db->first_key(); |
44 | my $next_key = $db->next_key($first_key); |
45 | |
46 | ok( |
47 | (($first_key eq "key1") || ($first_key eq "key2")) && |
48 | (($next_key eq "key1") || ($next_key eq "key2")) |
49 | ); |
50 | |
51 | ## |
52 | # Now clear all filters, and make sure all is unfiltered |
53 | ## |
54 | ok( $db->set_filter( 'store_key', undef ), "Unset store_key filter" ); |
55 | ok( $db->set_filter( 'store_value', undef ), "Unset store_value filter" ); |
56 | ok( $db->set_filter( 'fetch_key', undef ), "Unset fetch_key filter" ); |
57 | ok( $db->set_filter( 'fetch_value', undef ), "Unset fetch_value filter" ); |
58 | |
59 | is($db->{MYFILTERkey1}, "MYFILTERvalue1"); |
60 | is($db->{MYFILTERkey2}, "MYFILTERvalue2"); |
61 | |
62 | sub my_filter_store_key { return 'MYFILTER' . $_[0]; } |
63 | sub my_filter_store_value { return 'MYFILTER' . $_[0]; } |
64 | |
65 | sub my_filter_fetch_key { $_[0] =~ s/^MYFILTER//; return $_[0]; } |
66 | sub my_filter_fetch_value { $_[0] =~ s/^MYFILTER//; return $_[0]; } |