Skip to content

Commit f1a11df

Browse files
authored
Merge pull request #17 from und3f/test-unknown-version
Add unknown version test to the testing suite
2 parents bd50849 + 864517d commit f1a11df

File tree

2 files changed

+46
-32
lines changed

2 files changed

+46
-32
lines changed

lib/Protocol/Redis.pm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ Yaroslav Korshak (yko)
289289
290290
=head1 COPYRIGHT AND LICENSE
291291
292-
Copyright (C) 2011-2019, Sergey Zasenko.
292+
Copyright (C) 2011-2024, Serhii Zasenko.
293293
294294
This program is free software, you can redistribute it and/or modify it under
295295
the same terms as Perl 5.10.

lib/Protocol/Redis/Test.pm

Lines changed: 45 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ our @EXPORT = qw(protocol_redis_ok);
1111
use Test::More;
1212
require Carp;
1313

14-
sub protocol_redis_ok($$) {
14+
sub protocol_redis_ok {
1515
my ($redis_class, $api_version) = @_;
1616

1717
if ($api_version == 1) {
@@ -26,28 +26,36 @@ sub _apiv1_ok {
2626
my $redis_class = shift;
2727

2828
subtest 'Protocol::Redis APIv1 ok' => sub {
29-
plan tests => 43;
29+
plan tests => 44;
3030

3131
use_ok $redis_class;
3232

33-
my $redis = new_ok $redis_class, [api => 1];
33+
_test_version_1($redis_class);
3434

35-
can_ok $redis, 'parse', 'api', 'on_message', 'encode';
35+
_test_unknown_version($redis_class);
36+
}
37+
}
38+
39+
sub _test_version_1 {
40+
my $redis_class = shift;
41+
42+
my $redis = new_ok $redis_class, [api => 1];
43+
44+
can_ok $redis, 'parse', 'api', 'on_message', 'encode';
3645

37-
is $redis->api, 1, '$redis->api';
46+
is $redis->api, 1, '$redis->api';
3847

39-
# Parsing method tests
40-
$redis->on_message(undef);
41-
_parse_string_ok($redis);
42-
_parse_bulk_ok($redis);
43-
_parse_multi_bulk_ok($redis);
48+
# Parsing method tests
49+
$redis->on_message(undef);
50+
_parse_string_ok($redis);
51+
_parse_bulk_ok($redis);
52+
_parse_multi_bulk_ok($redis);
4453

45-
# on_message works
46-
_on_message_ok($redis);
54+
# on_message works
55+
_on_message_ok($redis);
4756

48-
# Encoding method tests
49-
_encode_ok($redis);
50-
}
57+
# Encoding method tests
58+
_encode_ok($redis);
5159
}
5260

5361
sub _parse_string_ok {
@@ -117,8 +125,7 @@ sub _parse_bulk_ok {
117125
$redis->parse("\$-1\r\n");
118126

119127
my $message = $redis->get_message;
120-
ok defined($message) && !defined($message->{data}),
121-
'nil bulk message';
128+
ok defined($message) && !defined($message->{data}), 'nil bulk message';
122129

123130
# Two chunked bulk messages
124131
$redis->parse(join("\r\n", '$4', 'test', '+OK'));
@@ -149,8 +156,8 @@ sub _parse_multi_bulk_ok {
149156
$redis->parse("\$5\r\ntest2\r\n");
150157
$redis->parse("\$5\r\ntest3\r\n");
151158

152-
is_deeply $redis->get_message,
153-
{ type => '*',
159+
is_deeply $redis->get_message, {
160+
type => '*',
154161
data => [
155162
{type => '$', data => 'test1'},
156163
{type => '$', data => 'test2'},
@@ -177,8 +184,8 @@ sub _parse_multi_bulk_ok {
177184

178185
# Multi bulk message with status items
179186
$redis->parse(join("\r\n", ('*2', '+OK', '$4', 'test'), ''));
180-
is_deeply $redis->get_message,
181-
{ type => '*',
187+
is_deeply $redis->get_message, {
188+
type => '*',
182189
data => [{type => '+', data => 'OK'}, {type => '$', data => 'test'}]
183190
};
184191

@@ -203,7 +210,7 @@ sub _parse_multi_bulk_ok {
203210
{type => '$', data => 'test2'},
204211
{type => '$', data => 'test3'}
205212
]
206-
};
213+
};
207214

208215
# Complex string
209216
$redis->parse("\*4\r\n");
@@ -217,11 +224,11 @@ sub _parse_multi_bulk_ok {
217224
{type => ':', data => 42},
218225
{type => '+', data => 'test3'}
219226
]
220-
};
227+
};
221228
is_deeply $redis->get_message, {
222229
type => '$',
223230
data => '12345',
224-
};
231+
};
225232

226233
# pipelined multi-bulk
227234
$redis->parse(
@@ -230,8 +237,8 @@ sub _parse_multi_bulk_ok {
230237
('*1', '$3', 'ok3'), '')
231238
);
232239

233-
is_deeply $redis->get_message,
234-
{ type => '*',
240+
is_deeply $redis->get_message, {
241+
type => '*',
235242
data => [{type => '$', data => 'ok1'}, {type => '$', data => 'ok2'}]
236243
};
237244
is_deeply $redis->get_message,
@@ -292,8 +299,8 @@ sub _encode_ok {
292299
join("\r\n", ('*1', '$4', 'test'), ''),
293300
'encode multi-bulk';
294301

295-
is $redis->encode(
296-
{ type => '*',
302+
is $redis->encode({
303+
type => '*',
297304
data => [
298305
{type => '$', data => 'test1'}, {type => '$', data => 'test2'}
299306
]
@@ -308,8 +315,8 @@ sub _encode_ok {
308315
is $redis->encode({type => '*', data => undef}), "\*-1\r\n",
309316
'encode nil multi-bulk';
310317

311-
is $redis->encode(
312-
{ type => '*',
318+
is $redis->encode({
319+
type => '*',
313320
data => [
314321
{type => '$', data => 'foo'},
315322
{type => '$', data => undef},
@@ -321,6 +328,13 @@ sub _encode_ok {
321328
'encode multi-bulk with nil element';
322329
}
323330

331+
sub _test_unknown_version {
332+
my $redis_class = shift;
333+
334+
eval { new($redis_class, api => 0); };
335+
ok($@, 'unknown version raises an exception');
336+
}
337+
324338
1;
325339
__END__
326340
@@ -354,7 +368,7 @@ L<Protocol::Redis>
354368
355369
=head1 COPYRIGHT AND LICENSE
356370
357-
Copyright (C) 2010-2011, Sergey Zasenko
371+
Copyright (C) 2010-2024, Serhii Zasenko
358372
359373
This program is free software, you can redistribute it and/or modify it under
360374
the terms of the Artistic License version 2.0.

0 commit comments

Comments
 (0)