~ubuntu-branches/ubuntu/saucy/db/saucy-proposed

« back to all changes in this revision

Viewing changes to perl/BerkeleyDB/t/unknown.t

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2010-11-05 15:02:09 UTC
  • mfrom: (13.1.12 sid)
  • Revision ID: james.westby@ubuntu.com-20101105150209-ppvyn0619pu014xo
Tags: 5.1.19-1ubuntu1
* Resynchronise with Debian.  Remaining changes:
  - Pass --build/--host to configure to support cross-building, and don't
    override CC.
  - Disable the Java build when cross-building, for now.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#!./perl -w
2
 
 
3
 
# ID: %I%, %G%   
4
 
 
5
 
use strict ;
6
 
 
7
 
use lib 't' ;
8
 
use BerkeleyDB; 
9
 
use util ;
10
 
use Test::More;
11
 
plan tests =>  41;
12
 
 
13
 
my $Dfile = "dbhash.tmp";
14
 
unlink $Dfile;
15
 
 
16
 
umask(0) ;
17
 
 
18
 
 
19
 
# Check for invalid parameters
20
 
{
21
 
    # Check for invalid parameters
22
 
    my $db ;
23
 
    eval ' $db = new BerkeleyDB::Unknown  -Stupid => 3 ; ' ;
24
 
    ok $@ =~ /unknown key value\(s\) Stupid/  ;
25
 
 
26
 
    eval ' $db = new BerkeleyDB::Unknown -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
27
 
    ok $@ =~ /unknown key value\(s\) (Bad,? |Stupid,? ){2}/  ;
28
 
 
29
 
    eval ' $db = new BerkeleyDB::Unknown -Env => 2 ' ;
30
 
    ok $@ =~ /^Env not of type BerkeleyDB::Env/ ;
31
 
 
32
 
    eval ' $db = new BerkeleyDB::Unknown -Txn => "fred" ' ;
33
 
    ok $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
34
 
 
35
 
    my $obj = bless [], "main" ;
36
 
    eval ' $db = new BerkeleyDB::Unknown -Env => $obj ' ;
37
 
    ok $@ =~ /^Env not of type BerkeleyDB::Env/ ;
38
 
}
39
 
 
40
 
# check the interface to a rubbish database
41
 
{
42
 
    # first an empty file
43
 
    my $lex = new LexFile $Dfile ;
44
 
    ok writeFile($Dfile, "") ;
45
 
 
46
 
    ok ! (new BerkeleyDB::Unknown -Filename => $Dfile); 
47
 
 
48
 
    # now a non-database file
49
 
    writeFile($Dfile, "\x2af6") ;
50
 
    ok ! (new BerkeleyDB::Unknown -Filename => $Dfile); 
51
 
}
52
 
 
53
 
# check the interface to a Hash database
54
 
 
55
 
{
56
 
    my $lex = new LexFile $Dfile ;
57
 
 
58
 
    # create a hash database
59
 
    ok my $db = new BerkeleyDB::Hash -Filename => $Dfile, 
60
 
                                    -Flags    => DB_CREATE ;
61
 
 
62
 
    # Add a few k/v pairs
63
 
    my $value ;
64
 
    my $status ;
65
 
    ok $db->db_put("some key", "some value") == 0  ;
66
 
    ok $db->db_put("key", "value") == 0  ;
67
 
 
68
 
    # close the database
69
 
    undef $db ;
70
 
 
71
 
    # now open it with Unknown
72
 
    ok $db = new BerkeleyDB::Unknown -Filename => $Dfile; 
73
 
 
74
 
    ok $db->type() == DB_HASH ;
75
 
    ok $db->db_get("some key", $value) == 0 ;
76
 
    ok $value eq "some value" ;
77
 
    ok $db->db_get("key", $value) == 0 ;
78
 
    ok $value eq "value" ;
79
 
 
80
 
    my @array ;
81
 
    eval { $db->Tie(\@array)} ;
82
 
    ok $@ =~ /^Tie needs a reference to a hash/ ;
83
 
 
84
 
    my %hash ;
85
 
    $db->Tie(\%hash) ;
86
 
    ok $hash{"some key"} eq "some value" ;
87
 
 
88
 
}
89
 
 
90
 
# check the interface to a Btree database
91
 
 
92
 
{
93
 
    my $lex = new LexFile $Dfile ;
94
 
 
95
 
    # create a hash database
96
 
    ok my $db = new BerkeleyDB::Btree -Filename => $Dfile, 
97
 
                                    -Flags    => DB_CREATE ;
98
 
 
99
 
    # Add a few k/v pairs
100
 
    my $value ;
101
 
    my $status ;
102
 
    ok $db->db_put("some key", "some value") == 0  ;
103
 
    ok $db->db_put("key", "value") == 0  ;
104
 
 
105
 
    # close the database
106
 
    undef $db ;
107
 
 
108
 
    # now open it with Unknown
109
 
    # create a hash database
110
 
    ok $db = new BerkeleyDB::Unknown -Filename => $Dfile; 
111
 
 
112
 
    ok $db->type() == DB_BTREE ;
113
 
    ok $db->db_get("some key", $value) == 0 ;
114
 
    ok $value eq "some value" ;
115
 
    ok $db->db_get("key", $value) == 0 ;
116
 
    ok $value eq "value" ;
117
 
 
118
 
 
119
 
    my @array ;
120
 
    eval { $db->Tie(\@array)} ;
121
 
    ok $@ =~ /^Tie needs a reference to a hash/ ;
122
 
 
123
 
    my %hash ;
124
 
    $db->Tie(\%hash) ;
125
 
    ok $hash{"some key"} eq "some value" ;
126
 
 
127
 
 
128
 
}
129
 
 
130
 
# check the interface to a Recno database
131
 
 
132
 
{
133
 
    my $lex = new LexFile $Dfile ;
134
 
 
135
 
    # create a recno database
136
 
    ok my $db = new BerkeleyDB::Recno -Filename => $Dfile, 
137
 
                                    -Flags    => DB_CREATE ;
138
 
 
139
 
    # Add a few k/v pairs
140
 
    my $value ;
141
 
    my $status ;
142
 
    ok $db->db_put(0, "some value") == 0  ;
143
 
    ok $db->db_put(1, "value") == 0  ;
144
 
 
145
 
    # close the database
146
 
    undef $db ;
147
 
 
148
 
    # now open it with Unknown
149
 
    # create a hash database
150
 
    ok $db = new BerkeleyDB::Unknown -Filename => $Dfile; 
151
 
 
152
 
    ok $db->type() == DB_RECNO ;
153
 
    ok $db->db_get(0, $value) == 0 ;
154
 
    ok $value eq "some value" ;
155
 
    ok $db->db_get(1, $value) == 0 ;
156
 
    ok $value eq "value" ;
157
 
 
158
 
 
159
 
    my %hash ;
160
 
    eval { $db->Tie(\%hash)} ;
161
 
    ok $@ =~ /^Tie needs a reference to an array/ ;
162
 
 
163
 
    my @array ;
164
 
    $db->Tie(\@array) ;
165
 
    ok $array[1] eq "value" ;
166
 
 
167
 
 
168
 
}
169
 
 
170
 
# check i/f to text