1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
# Complete tests with File
use strict;
use warnings;
use Test::More;
use constant SESSIONPATH => 't'
. ( $^O and $^O =~ /(?:MSWin|Windows)/i ? '\\' : '/' )
. 'sessions';
eval {
require File::Path;
File::Path::remove_tree(SESSIONPATH);
File::Path::mkpath(SESSIONPATH);
};
plan skip_all => "Unable to use file system ($@)" if ($@);
my @list = ( "aa" .. "ay", "aa" .. "ac" );
my $count = @list;
plan tests => 27 + 5 * $count;
use_ok('Apache::Session::Browseable::File');
my %session;
my $args = { Directory => SESSIONPATH, Index => "f1 f2", };
foreach (@list) {
ok( tie %session, 'Apache::Session::Browseable::File',
undef, $args, "Create session $_" );
$session{f1} = "1_$_";
$session{f2} = "2_$_";
$session{f3} = "3_$_";
$session{f4} = "4_$_";
untie %session;
}
my $res;
# 1. Get simply all sessions
ok(
$res = Apache::Session::Browseable::File->get_key_from_all_sessions($args),
'Get all sessions'
);
ok( count($res) == $count,
"get_key_from_all_sessions returns $count sessions (" . count($res) . ")" );
# 2. Test searchOn() on an indexed field
ok( $res = Apache::Session::Browseable::File->searchOn( $args, 'f1', '1_aa' ) );
ok( count($res) == 2, 'Get 2 "aa" sessions (' . count($res) . ")" );
ok( $res = Apache::Session::Browseable::File->searchOn( $args, 'f1', '1_ad' ) );
ok( count($res) == 1, 'Get 1 "ad" sessions (' . count($res) . ")" );
# 3. Test searchOn() on an unindexed field
ok( $res = Apache::Session::Browseable::File->searchOn( $args, 'f3', '3_aa' ) );
ok( count($res) == 2, 'Get 2 "aa" sessions (' . count($res) . ")" );
ok( $res = Apache::Session::Browseable::File->searchOn( $args, 'f3', '3_ad' ) );
ok( count($res) == 1, 'Get 1 "ad" sessions (' . count($res) . ")" );
# 4. Test searchOnExpr() on an indexed field
ok( $res =
Apache::Session::Browseable::File->searchOnExpr( $args, 'f1', '*aa' ) );
ok( count($res) == 2, 'Get 2 "aa" sessions (' . count($res) . ")" );
# 5. Test searchOnExpr() on an unindexed field
ok( $res =
Apache::Session::Browseable::File->searchOnExpr( $args, 'f3', '*aa' ) );
ok( count($res) == 2, 'Get 2 "aa" sessions (' . count($res) . ")" );
# 6. Test get_key_from_all_sessions to request for indexed fields
ok(
$res = Apache::Session::Browseable::File->get_key_from_all_sessions(
$args, [ 'f1', 'f2' ]
)
);
while ( my ( $id, $entry ) = each %$res ) {
ok( $entry->{f1} =~ /^1_(\w{2})$/ );
my $t = $1;
ok( $entry->{f2} =~ /^2_${t}$/ );
}
# 7. Test searchOn to request for indexed fields
ok(
$res = Apache::Session::Browseable::File->searchOn(
$args, 'f1', '1_aa', 'f1', 'f2'
)
);
while ( my ( $id, $entry ) = each %$res ) {
ok( $entry->{f1} =~ /^1_(\w{2})$/ );
my $t = $1;
ok( $entry->{f2} =~ /^2_${t}$/ );
}
# 8. Test get_key_from_all_sessions to request for unindexed fields
ok(
$res = Apache::Session::Browseable::File->get_key_from_all_sessions(
$args, [ 'f1', 'f3' ]
)
);
while ( my ( $id, $entry ) = each %$res ) {
ok( $entry->{f1} =~ /^1_(\w{2})$/ );
my $t = $1;
ok( $entry->{f3} =~ /^3_${t}$/ );
}
# 9. Test searchOn to request for unindexed fields
ok(
$res = Apache::Session::Browseable::File->searchOn(
$args, 'f1', '1_aa', 'f1', 'f3'
)
);
eval { File::Path::remove_tree(SESSIONPATH) };
while ( my ( $id, $entry ) = each %$res ) {
ok( $entry->{f1} =~ /^1_(\w{2})$/ );
my $t = $1;
ok( $entry->{f3} =~ /^3_${t}$/ );
}
sub count {
my @c = keys %{ $_[0] };
return scalar @c;
}
1;
|