Basic OO functions for perl lib
[blerg.git] / lib / perl / Blerg-Database / t / Blerg-Database.t
1 # Before 'make install' is performed this script should be runnable with
2 # 'make test'. After 'make install' it should work as 'perl Blerg-Database.t'
3
4 #########################
5
6 # change 'tests => 1' to 'tests => last_test_to_print';
7
8 use File::Path qw/remove_tree/;
9 use strict;
10 use warnings;
11
12 use Test::More tests => 18;
13 BEGIN { use_ok('Blerg::Database') };
14
15 #########################
16
17 # Insert your test code below, the Test::More module is use()ed here so read
18 # its man page ( perldoc Test::More ) for help writing this test script.
19
20 # Setup
21 my $test_user = 'barfy';
22 chdir '../../..';
23 remove_tree "data/$test_user";
24 remove_tree "hash_tags/data";
25
26 ### C interfaces
27 # Open a database
28 my $ptr = Blerg::Database::_open($test_user);
29 ok( ref $ptr eq 'struct blergPtr' );
30
31 # Store
32 my $data = "Hello!";
33 my $t0 = time;
34 ok( Blerg::Database::_store($ptr, $data) >= 0 );
35
36 # Check internal database
37 open DATA, "data/$test_user/data0";
38 my $check_data = <DATA>;
39 close DATA;
40 ok( $check_data eq $data );
41
42 # Fetch
43 ok( Blerg::Database::_fetch($ptr, 0) eq $data );
44 ok( not defined Blerg::Database::_fetch($ptr, 1) );
45
46 # Get time
47 my $t = Blerg::Database::_get_timestamp($ptr, 0);
48 ok( $t0 - $t <= 1.0 );
49
50 # Count
51 my $count = Blerg::Database::_get_record_count($ptr);
52 ok( $count == 1 );
53
54 # Will have to test subscription bits after the Subscription module is
55 # made
56
57 # Test tags
58 Blerg::Database::_store($ptr, "This is data A #data");
59 Blerg::Database::_store($ptr, "This is data B #data");
60 Blerg::Database::_store($ptr, "This is data C #data");
61
62 my @list = Blerg::Database::_tag_list('#data', 0, 1);
63 ok( @list == 3 );
64 ok( $list[0]->{author} eq $test_user );
65 ok( $list[0]->{record} == 3 );
66
67 # Close database
68 ok( Blerg::Database::_close($ptr) );
69
70 # Test existence
71 ok( Blerg::Database::exists($test_user) );
72
73 # Perl OO interface
74 my $blerg = Blerg::Database->open_existing('nonexistent');
75 ok( not defined $blerg );
76 $blerg = Blerg::Database->open($test_user);
77 ok( defined $blerg );
78 ok( $blerg->fetch(0) eq $data );
79 ok( $blerg->store($data) == 4 );
80 ok( $blerg->fetch(4) eq $data );
81