The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More;
use strict; use warnings FATAL => 'all';

use_ok( 'IRC::Toolkit::Masks' );

## parse_user
cmp_ok 
  scalar parse_user('SomeNick!user@my.host.org'),
  'eq',
  'SomeNick',
  'parse_user (scalar) ok';

is_deeply
  [ parse_user('SomeNick!user@my.host.org') ],
  [ 'SomeNick', 'user', 'my.host.org' ],
  'parse_user (list) ok';


## normalize_mask
cmp_ok
  normalize_mask('avenj'),
  'eq',
  'avenj!*@*',
  'normalize_mask (nick-only) ok';

cmp_ok
  normalize_mask('avenj!@'),
  'eq',
  'avenj!*@*',
  'normalize_mask (irregular nick-only) ok';

cmp_ok
  normalize_mask('*@*'),
  'eq',
  '*!*@*',
  'normalize_mask (wildcard) ok';

cmp_ok
  normalize_mask('*avenj@*'),
  'eq',
  '*!*avenj@*',
  'normalize_mask (username and wildcard host) ok';

cmp_ok
  normalize_mask('*avenj@'),
  'eq',
  '*!*avenj@*',
  'normalize_mask (username only) ok';

cmp_ok
  normalize_mask('*ave**nj@foobar'),
  'eq',
  '*!*ave*nj@foobar',
  'normalize_mask (redundant wildcard) ok';

cmp_ok
  normalize_mask('avenj!'),
  'eq',
  'avenj!*@*',
  'normalize_mask (nickname only) ok';


## matches_mask
ok
  matches_mask('*!*@*', 'avenj!avenj@oppresses.us'),
  'matches_mask( *!*@* ) ok';

ok
  matches_mask('*!avenj@oppresses.us', 'avenj!avenj@oppresses.us'),
  'matches_mask( *!avenj@oppresses.us ) ok';

ok !matches_mask('nobody!nowhere@*', 'avenj!avenj@oppresses.us'),
  'negative matches_mask ok';

done_testing;