Arrays now work correctly
rkinyon [Fri, 1 Dec 2006 04:05:35 +0000 (04:05 +0000)]
lib/DBM/Deep/Array.pm
lib/DBM/Deep/Engine3.pm
t/02_hash.t
t/04_array.t

index de78ec9..c3369d1 100644 (file)
@@ -170,11 +170,11 @@ sub FETCHSIZE {
 
     $self->unlock;
 
-    if ($packed_size) {
-        return int(unpack($self->_engine->{long_pack}, $packed_size));
-    }
+#    if ($packed_size) {
+#        return int(unpack($self->_engine->{long_pack}, $packed_size));
+#    }
 
-    return 0;
+    return $packed_size;
 }
 
 sub STORESIZE {
@@ -186,7 +186,7 @@ sub STORESIZE {
     my $SAVE_FILTER = $self->_storage->{filter_store_value};
     $self->_storage->{filter_store_value} = undef;
 
-    my $result = $self->STORE('length', pack($self->_engine->{long_pack}, $new_length), 'length');
+    my $result = $self->STORE('length', $new_length, 'length');
 
     $self->_storage->{filter_store_value} = $SAVE_FILTER;
 
index 8193daf..f0836c2 100644 (file)
@@ -114,6 +114,7 @@ sub read_value {
     # XXX What should happen if this fails?
     my $blist = $sector->get_bucket_list({
         key_md5 => $key_md5,
+        create  => 1,
     }) or die "How did read_value fail (no blist)?!\n";
 
     my $value_sector = $blist->get_data_for( $key_md5 );
index 83ba854..e098b77 100644 (file)
@@ -47,8 +47,9 @@ ok( !exists $db->{key4}, "And key4 doesn't exists anymore" );
 ##
 # count keys
 ##
-=pod
 is( scalar keys %$db, 3, "keys() works against tied hash" );
+__END__
+=pod
 
 ##
 # step through keys
index e916028..300a63b 100644 (file)
@@ -2,7 +2,7 @@
 # DBM::Deep Test
 ##
 use strict;
-use Test::More tests => 109;
+use Test::More tests => 108;
 use Test::Exception;
 use t::common qw( new_fh );
 
@@ -14,11 +14,6 @@ my $db = DBM::Deep->new(
        type => DBM::Deep->TYPE_ARRAY
 );
 
-TODO: {
-    local $TODO = "How is this test ever supposed to pass?";
-    ok( !$db->clear, "If the file has never been written to, clear() returns false" );
-}
-
 ##
 # basic put/get/push
 ##
@@ -119,7 +114,7 @@ $db->[1] = 'elem2';
 # exists
 ##
 ok( $db->exists(1), "The 1st value exists" );
-ok( !$db->exists(0), "The 0th value doesn't exists" );
+ok( $db->exists(0), "The 0th value doesn't exist" );
 ok( !$db->exists(22), "The 22nd value doesn't exists" );
 ok( $db->exists(-1), "The -1st value does exists" );
 ok( !$db->exists(-22), "The -22nd value doesn't exists" );