Condition Coverage

blib/lib/Net/DirectConnect/clihub.pm
Criterion Covered Total %
condition 0 120 0.0


and 3 conditions

line !l l&&!r l&&r condition
90 0 0 0 !keys(%{$$self{'NickList'};}) || $$self{'NickList'}{$nick}{'oper'} and $text eq 'You are already in the hub.'
119 0 0 0 not $$self{'count_parse'}{'chatline'} and $text =~ /PtokaX/i
123 0 0 0 $$self{'NickList'}{$nick}{'oper'} and $text eq 'Sorry Hub is busy now, no search, try later..'
129 0 0 0 keys %{$$self{'NickList'};} && exists $$self{'NickList'}{$nick}
130 0 0 0 $$self{'auto_bug'} and $nick eq 'VerliHub'
0 0 0 $$self{'auto_bug'} and $nick eq 'VerliHub' and $text =~ /^This Hub Is Running Version 0.9.8d/i
228 0 0 0 $$self{'follow_forcemove'} and $to
292 0 0 0 $found and $tth
320 0 0 0 $$params{'ip'} && $$params{'udp'}
343 0 0 0 $$params{'ip'} and $$params{'udp'}
431 0 0 0 $$self{'min_chat_delay'} and time - $$self{'last_chat_time'} < $$self{'min_chat_delay'}
482 0 0 0 $$self{'M'} eq 'P' and not $$self{'allow_passive_ConnectToMe'}
548 0 0 0 $$self{'M'} ne 'P' && $$self{'myip'} && $$self{'myport_udp'}

or 2 conditions

line l !l condition
75 0 0 $$self{'parent'}{$_} ||= {}
320 0 0 -s $found || -1
499 0 0 $self->supports || (return)

or 3 conditions

line l !l&&r !l&&!r condition
67 0 0 0 $$self{$_} //= $_{$_}
75 0 0 0 $$self{$_} ||= ($$self{'parent'}{$_} ||= {})
90 0 0 0 !keys(%{$$self{'NickList'};}) || $$self{'NickList'}{$nick}{'oper'}
92 0 0 0 $$self{'NickList'}{$nick}{'oper'} or $$self{'NickList'}{$nick}{'hubbot'}
0 0 0 $$self{'NickList'}{$nick}{'oper'} or $$self{'NickList'}{$nick}{'hubbot'} or $nick eq 'Hub-Security'
93 0 0 0 $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430} \x{441}\x{43e}\x{441}\x{442}\x{430}\x{432}\x{43b}\x{44f}\x{435}\x{442}: \(Minimum search interval is:\) (\d+)\x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \(seconds\)/ or $text =~ /^(?:Minimum search interval is|\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430}):(\d+)s/
0 0 0 $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430} \x{441}\x{43e}\x{441}\x{442}\x{430}\x{432}\x{43b}\x{44f}\x{435}\x{442}: \(Minimum search interval is:\) (\d+)\x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \(seconds\)/ or $text =~ /^(?:Minimum search interval is|\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430}):(\d+)s/ or $text =~ /Search ignored\. Please leave at least (\d+) seconds between search attempts\./
0 0 0 $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430} \x{441}\x{43e}\x{441}\x{442}\x{430}\x{432}\x{43b}\x{44f}\x{435}\x{442}: \(Minimum search interval is:\) (\d+)\x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \(seconds\)/ or $text =~ /^(?:Minimum search interval is|\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430}):(\d+)s/ or $text =~ /Search ignored\. Please leave at least (\d+) seconds between search attempts\./ or $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43c}\x{435}\x{436}\x{434}\x{443} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{432}\x{44b}\x{43c}\x{438} \x{437}\x{430}\x{43f}\x{440}\x{43e}\x{441}\x{430}\x{43c}\x{438}:(\d+)\x{441}\x{435}\x{43a}., \x{43f}\x{43e}\x{43f}\x{440}\x{43e}\x{431}\x{443}\x{439}\x{442}\x{435} \x{447}\x{443}\x{442}\x{44c} \x{43f}\x{43e}\x{437}\x{436}\x{435}/
0 0 0 $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430} \x{441}\x{43e}\x{441}\x{442}\x{430}\x{432}\x{43b}\x{44f}\x{435}\x{442}: \(Minimum search interval is:\) (\d+)\x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \(seconds\)/ or $text =~ /^(?:Minimum search interval is|\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{430}):(\d+)s/ or $text =~ /Search ignored\. Please leave at least (\d+) seconds between search attempts\./ or $text =~ /\x{41c}\x{438}\x{43d}\x{438}\x{43c}\x{430}\x{43b}\x{44c}\x{43d}\x{44b}\x{439} \x{438}\x{43d}\x{442}\x{435}\x{440}\x{432}\x{430}\x{43b} \x{43c}\x{435}\x{436}\x{434}\x{443} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{432}\x{44b}\x{43c}\x{438} \x{437}\x{430}\x{43f}\x{440}\x{43e}\x{441}\x{430}\x{43c}\x{438}:(\d+)\x{441}\x{435}\x{43a}., \x{43f}\x{43e}\x{43f}\x{440}\x{43e}\x{431}\x{443}\x{439}\x{442}\x{435} \x{447}\x{443}\x{442}\x{44c} \x{43f}\x{43e}\x{437}\x{436}\x{435}/ or $text =~ /You can do 1 searches in (\d+) seconds/
103 0 0 0 rand(5) + $1 || $$self{'search_every_min'}
107 0 0 0 $text =~ /(?:\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} )?\x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{43f}\x{435}\x{440}\x{435}\x{434} \x{441}\x{43b}\x{435}\x{434}\x{443}\x{44e}\x{449}\x{438}\x{43c} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{43c}\./i or $text =~ /(?:Please )?wait (\d+) seconds before next search\./i
0 0 0 $text =~ /(?:\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} )?\x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{43f}\x{435}\x{440}\x{435}\x{434} \x{441}\x{43b}\x{435}\x{434}\x{443}\x{44e}\x{449}\x{438}\x{43c} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{43c}\./i or $text =~ /(?:Please )?wait (\d+) seconds before next search\./i or $text eq 'Пожалуйста не используйте поиск так часто!'
0 0 0 $text =~ /(?:\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} )?\x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{43f}\x{435}\x{440}\x{435}\x{434} \x{441}\x{43b}\x{435}\x{434}\x{443}\x{44e}\x{449}\x{438}\x{43c} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{43c}\./i or $text =~ /(?:Please )?wait (\d+) seconds before next search\./i or $text eq 'Пожалуйста не используйте поиск так часто!' or $text eq q[Please don't flood with searches!]
0 0 0 $text =~ /(?:\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} )?\x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{43f}\x{435}\x{440}\x{435}\x{434} \x{441}\x{43b}\x{435}\x{434}\x{443}\x{44e}\x{449}\x{438}\x{43c} \x{43f}\x{43e}\x{438}\x{441}\x{43a}\x{43e}\x{43c}\./i or $text =~ /(?:Please )?wait (\d+) seconds before next search\./i or $text eq 'Пожалуйста не используйте поиск так часто!' or $text eq q[Please don't flood with searches!] or $text eq 'Sorry Hub is busy now, no search, try later..'
114 0 0 0 rand(5) + $1 || $$self{'search_every_min'}
129 0 0 0 not keys %{$$self{'NickList'};} && exists $$self{'NickList'}{$nick} or $$self{'NickList'}{$nick}{'oper'}
130 0 0 0 $text =~ /Bad nickname: Wait (\d+)sec before reconnecting/i or $text =~ /\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} \x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{434}\x{43e} \x{43f}\x{43e}\x{432}\x{442}\x{43e}\x{440}\x{43d}\x{43e}\x{433}\x{43e} \x{43f}\x{43e}\x{434}\x{43a}\x{43b}\x{44e}\x{447}\x{435}\x{43d}\x{438}\x{44f}\./
0 0 0 $text =~ /Bad nickname: Wait (\d+)sec before reconnecting/i or $text =~ /\x{41f}\x{43e}\x{436}\x{430}\x{43b}\x{443}\x{439}\x{441}\x{442}\x{430} \x{43f}\x{43e}\x{434}\x{43e}\x{436}\x{434}\x{438}\x{442}\x{435} (\d+) \x{441}\x{435}\x{43a}\x{443}\x{43d}\x{434} \x{434}\x{43e} \x{43f}\x{43e}\x{432}\x{442}\x{43e}\x{440}\x{43d}\x{43e}\x{433}\x{43e} \x{43f}\x{43e}\x{434}\x{43a}\x{43b}\x{44e}\x{447}\x{435}\x{43d}\x{438}\x{44f}\./ or $text =~ /Do not reconnect too fast. Wait (\d+) secs before reconnecting./
290 0 0 0 $$self{'share_full'}{$$params{'tth'}} || $$self{'share_full'}{$$params{'string'}}
395 0 0 0 $$self{'want_download'}{$$params{'TR'}} || $$self{'want_download'}{$$params{'filename'}}
409 0 0 0 $$self{'parse'}{$_} ||= $_{$_}
494 0 0 0 $_[0] || $$self{'Pass'}
521 0 0 0 $_[3] ||= $_[4] =~ s/^(TTH:)?([A-Z0-9]{39})$/TTH:$2/ ? '9' : '1'
565 0 0 0 $$self{'cmd'}{$_} ||= $_{$_}
567 0 0 0 $$self{'M'} eq 'A' or not $$self{'M'}