The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--
This file was generated by Devel::Cover Version 1.18
Devel::Cover is copyright 2001-2012, Paul Johnson (paul@pjcj.net)
Devel::Cover is free. It is licensed under the same terms as Perl itself.
The latest version of Devel::Cover should be available from my homepage:
http://www.pjcj.net
-->
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
    <meta http-equiv="Content-Language" content="en-us"></meta>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <link rel="stylesheet" type="text/css" href="cover.css"></link>
    <title>File Coverage: blib/lib/Test/Mocha/Method.pm</title>
</head>
<body>
<h1>File Coverage</h1>
<table>
<tr><td class="h" align="right">File:</td><td align="left">blib/lib/Test/Mocha/Method.pm</td></tr>
<tr><td class="h" align="right">Coverage:</td><td align="left" class="c2">97.6%</td></tr>
</table>
<div><br/></div>
<table>
<tr><th>line</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>pod</th><th>time</th><th>code</th></tr>
<tr><td class="h">1</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">package Test::Mocha::Method;</td></tr>
<tr><td class="h">2</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># ABSTRACT: Objects to represent methods and their arguuments</td></tr>
<tr><td class="h">3</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">$Test::Mocha::Method::VERSION = &#39;0.61&#39;;</td></tr>
<tr><td class="h">4</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L4">12</a></div></td><td></td><td><div>4088</div><div>11</div><div>212</div></td><td class="s">use strict;</td></tr>
<tr><td class="h">5</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L5">12</a></div></td><td></td><td><div>22</div><div>12</div><div>143</div></td><td class="s">use warnings;</td></tr>
<tr><td class="h">6</td><td colspan="7"></td></tr><tr><td class="h">7</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># smartmatch dependencies</td></tr>
<tr><td class="h">8</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L8">12</a></div></td><td></td><td><div>135</div><div>23</div><div>209</div></td><td class="s">use 5.010001;</td></tr>
<tr><td class="h">9</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L9">12</a></div></td><td></td><td><div>3971</div><div>4618</div><div>36</div></td><td class="s">use experimental &#39;smartmatch&#39;;</td></tr>
<tr><td class="h">10</td><td colspan="7"></td></tr><tr><td class="h">11</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L11">12</a></div></td><td></td><td><div>399</div><div>84</div><div>305</div></td><td class="s">use Carp &#39;croak&#39;;</td></tr>
<tr><td class="h">12</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L12">12</a></div></td><td></td><td><div>27</div><div>8</div><div>278</div></td><td class="s">use Scalar::Util qw( blessed looks_like_number refaddr );</td></tr>
<tr><td class="h">13</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L13">12</a></div></td><td></td><td><div>4428</div><div>17</div><div>224</div></td><td class="s">use Test::Mocha::PartialDump;</td></tr>
<tr><td class="h">14</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L14">12</a></div></td><td></td><td><div>4294</div><div>24</div><div>80</div></td><td class="s">use Test::Mocha::Types qw( Matcher Slurpy );</td></tr>
<tr><td class="h">15</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L15">12</a></div></td><td></td><td><div>7961</div><div>14</div><div>398</div></td><td class="s">use Test::Mocha::Util &#39;check_slurpy_arg&#39;;</td></tr>
<tr><td class="h">16</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L16">12</a></div></td><td></td><td><div>32</div><div>9</div><div>25</div></td><td class="s">use Types::Standard qw( ArrayRef HashRef Str );</td></tr>
<tr><td class="h">17</td><td colspan="7"></td></tr><tr><td class="h">18</td><td><div class="c3">12</div><div class="c3">12</div><div class="c3">12</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L18">12</a></div></td><td></td><td><div>3334</div><div>11</div><div>3884</div></td><td class="s">use overload &#39;&quot;&quot;&#39; =&gt; \&amp;stringify, fallback =&gt; 1;</td></tr>
<tr><td class="h">19</td><td colspan="7"></td></tr><tr><td class="h">20</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s"># cause string overloaded objects (Matchers) to be stringified</td></tr>
<tr><td class="h">21</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">my $Dumper = Test::Mocha::PartialDump-&gt;new( objects =&gt; 0, stringify =&gt; 1 );</td></tr>
<tr><td class="h">22</td><td colspan="7"></td></tr><tr><td class="h">23</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub new {</td></tr>
<tr><td class="h">24</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">25</td><td><div class="c3">345</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L25">345</a></div></td><td><div class="c3">0</div></td><td><div>468</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ( $class, %args ) = @_;</td></tr>
<tr><td class="h">26</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;### assert: Str-&gt;check( $args{name} )</td></tr>
<tr><td class="h">27</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;### assert: ArrayRef-&gt;check( $args{args} )</td></tr>
<tr><td class="h">28</td><td><div class="c3">345</div></td><td></td><td></td><td></td><td></td><td><div>721</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return bless \%args, $class;</td></tr>
<tr><td class="h">29</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">30</td><td colspan="7"></td></tr><tr><td class="h">31</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub name {</td></tr>
<tr><td class="h">32</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">33</td><td><div class="c3">1406</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L33">1406</a></div></td><td><div class="c3">0</div></td><td><div>2335</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $_[0]-&gt;{name};</td></tr>
<tr><td class="h">34</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">35</td><td colspan="7"></td></tr><tr><td class="h">36</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub args {</td></tr>
<tr><td class="h">37</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">38</td><td><div class="c3">725</div><div class="c3">725</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L38">725</a></div></td><td><div class="c3">0</div></td><td><div>327</div><div>794</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return @{ $_[0]-&gt;{args} };</td></tr>
<tr><td class="h">39</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">40</td><td colspan="7"></td></tr><tr><td class="h">41</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub stringify {</td></tr>
<tr><td class="h">42</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# &quot;&quot;&quot;</td></tr>
<tr><td class="h">43</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Stringifies this method call to something that roughly resembles what</td></tr>
<tr><td class="h">44</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# you&#39;d type in Perl.</td></tr>
<tr><td class="h">45</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# &quot;&quot;&quot;</td></tr>
<tr><td class="h">46</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">47</td><td><div class="c3">231</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L47">231</a></div></td><td><div class="c3">0</div></td><td><div>2382</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ($self) = @_;</td></tr>
<tr><td class="h">48</td><td><div class="c3">231</div></td><td></td><td></td><td></td><td></td><td><div>183</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $self-&gt;name . &#39;(&#39; . $Dumper-&gt;dump( $self-&gt;args ) . &#39;)&#39;;</td></tr>
<tr><td class="h">49</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">50</td><td colspan="7"></td></tr><tr><td class="h">51</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub __satisfied_by {</td></tr>
<tr><td class="h">52</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# &quot;&quot;&quot;</td></tr>
<tr><td class="h">53</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# Returns true if the given C&lt;$invocation&gt; satisfies this method call.</td></tr>
<tr><td class="h">54</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# &quot;&quot;&quot;</td></tr>
<tr><td class="h">55</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">56</td><td><div class="c3">469</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L56">469</a></div></td><td></td><td><div>231</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ( $self, $invocation ) = @_;</td></tr>
<tr><td class="h">57</td><td colspan="7"></td></tr><tr><td class="h">58</td><td><div class="c3">469</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L58">100</a></div></td><td></td><td></td><td></td><td><div>378</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return unless $invocation-&gt;name eq $self-&gt;name;</td></tr>
<tr><td class="h">59</td><td colspan="7"></td></tr><tr><td class="h">60</td><td><div class="c3">247</div></td><td></td><td></td><td></td><td></td><td><div>254</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my @expected = $self-&gt;args;</td></tr>
<tr><td class="h">61</td><td><div class="c3">247</div></td><td></td><td></td><td></td><td></td><td><div>208</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my @input&nbsp;&nbsp;&nbsp;&nbsp;= $invocation-&gt;args;</td></tr>
<tr><td class="h">62</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# invocation arguments can&#39;t be argument matchers</td></tr>
<tr><td class="h">63</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;### assert: ! grep { Matcher-&gt;check($_) } @input</td></tr>
<tr><td class="h">64</td><td><div class="c3">247</div></td><td></td><td></td><td></td><td></td><td><div>279</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;check_slurpy_arg(@expected);</td></tr>
<tr><td class="h">65</td><td colspan="7"></td></tr><tr><td class="h">66</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# match @input against @expected which may include argument matchers</td></tr>
<tr><td class="h">67</td><td><div class="c3">247</div></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--condition.html#L67">100</a></div></td><td></td><td></td><td><div>526</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;while ( @input &amp;&amp; @expected ) {</td></tr>
<tr><td class="h">68</td><td><div class="c3">214</div></td><td></td><td></td><td></td><td></td><td><div>257</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $matcher = shift @expected;</td></tr>
<tr><td class="h">69</td><td colspan="7"></td></tr><tr><td class="h">70</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# slurpy argument matcher</td></tr>
<tr><td class="h">71</td><td><div class="c3">214</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L71">100</a></div><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L71">100</a></div></td><td></td><td></td><td></td><td><div>212</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( Slurpy-&gt;check($matcher) ) {</td></tr>
<tr><td class="h">72</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>342</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$matcher = $matcher-&gt;{slurpy};</td></tr>
<tr><td class="h">73</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;### assert: $matcher-&gt;is_a_type_of(ArrayRef) || $matcher-&gt;is_a_type_of(HashRef)</td></tr>
<tr><td class="h">74</td><td colspan="7"></td></tr><tr><td class="h">75</td><td><div class="c3">38</div></td><td></td><td></td><td></td><td></td><td><div>16</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $value;</td></tr>
<tr><td class="h">76</td><td><div class="c3">38</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L76">100</a></div><div class="c0" title="T/-"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L76">50</a></div></td><td></td><td></td><td></td><td><div>37</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $matcher-&gt;is_a_type_of(ArrayRef) ) {</td></tr>
<tr><td class="h">77</td><td><div class="c3">18</div></td><td></td><td></td><td></td><td></td><td><div>876</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = [@input];</td></tr>
<tr><td class="h">78</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">79</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif ( $matcher-&gt;is_a_type_of(HashRef) ) {</td></tr>
<tr><td class="h">80</td><td><div class="c3">20</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L80">100</a></div></td><td></td><td></td><td></td><td><div>8579</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless scalar(@input) % 2 == 0;</td></tr>
<tr><td class="h">81</td><td><div class="c3">8</div></td><td></td><td></td><td></td><td></td><td><div>12</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = {@input};</td></tr>
<tr><td class="h">82</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">83</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# else { invalid matcher type }</td></tr>
<tr><td class="h">84</td><td><div class="c3">26</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L84">100</a></div></td><td></td><td></td><td></td><td><div>51</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless $matcher-&gt;check($value);</td></tr>
<tr><td class="h">85</td><td colspan="7"></td></tr><tr><td class="h">86</td><td><div class="c3">21</div></td><td></td><td></td><td></td><td></td><td><div>109</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@input = ();</td></tr>
<tr><td class="h">87</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">88</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# argument matcher</td></tr>
<tr><td class="h">89</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif ( Matcher-&gt;check($matcher) ) {</td></tr>
<tr><td class="h">90</td><td><div class="c3">70</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L90">100</a></div></td><td></td><td></td><td></td><td><div>7147</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless $matcher-&gt;check( shift @input );</td></tr>
<tr><td class="h">91</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">92</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# literal match</td></tr>
<tr><td class="h">93</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else {</td></tr>
<tr><td class="h">94</td><td><div class="c3">106</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L94">100</a></div></td><td></td><td></td><td></td><td><div>956</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless _match( shift(@input), $matcher );</td></tr>
<tr><td class="h">95</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">96</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">97</td><td colspan="7"></td></tr><tr><td class="h">98</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# slurpy matcher should handle empty argument lists</td></tr>
<tr><td class="h">99</td><td><div class="c3">169</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L99">100</a></div></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--condition.html#L99">100</a></div></td><td></td><td></td><td><div>6784</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ( @expected &gt; 0 &amp;&amp; Slurpy-&gt;check( $expected[0] ) ) {</td></tr>
<tr><td class="h">100</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>62</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $matcher = shift(@expected)-&gt;{slurpy};</td></tr>
<tr><td class="h">101</td><td colspan="7"></td></tr><tr><td class="h">102</td><td><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;my $value;</td></tr>
<tr><td class="h">103</td><td><div class="c3">6</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L103">100</a></div><div class="c0" title="T/-"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L103">50</a></div></td><td></td><td></td><td></td><td><div>8</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if ( $matcher-&gt;is_a_type_of(ArrayRef) ) {</td></tr>
<tr><td class="h">104</td><td><div class="c3">4</div></td><td></td><td></td><td></td><td></td><td><div>106</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = [@input];</td></tr>
<tr><td class="h">105</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">106</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;elsif ( $matcher-&gt;is_a_type_of(HashRef) ) {</td></tr>
<tr><td class="h">107</td><td><div class="c3">2</div></td><td><div class="c0" title="-/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L107">50</a></div></td><td></td><td></td><td></td><td><div>523</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless scalar(@input) % 2 == 0;</td></tr>
<tr><td class="h">108</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>3</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$value = {@input};</td></tr>
<tr><td class="h">109</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">110</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# else { invalid matcher type }</td></tr>
<tr><td class="h">111</td><td><div class="c3">6</div></td><td><div class="c0" title="-/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L111">50</a></div></td><td></td><td></td><td></td><td><div>11</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return unless $matcher-&gt;check($value);</td></tr>
<tr><td class="h">112</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">113</td><td colspan="7"></td></tr><tr><td class="h">114</td><td><div class="c3">169</div></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--condition.html#L114">100</a></div></td><td></td><td></td><td><div>603</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return @input == 0 &amp;&amp; @expected == 0;</td></tr>
<tr><td class="h">115</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">116</td><td colspan="7"></td></tr><tr><td class="h">117</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">sub _match {</td></tr>
<tr><td class="h">118</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# &quot;&quot;&quot;Match 2 values for equality.&quot;&quot;&quot;</td></tr>
<tr><td class="h">119</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# uncoverable pod</td></tr>
<tr><td class="h">120</td><td><div class="c3">128</div></td><td></td><td></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--subroutine.html#L120">128</a></div></td><td></td><td><div>63</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;my ( $x, $y ) = @_;</td></tr>
<tr><td class="h">121</td><td colspan="7"></td></tr><tr><td class="h">122</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# This function uses smart matching, but we need to limit the scenarios</td></tr>
<tr><td class="h">123</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# in which it is used because of its quirks.</td></tr>
<tr><td class="h">124</td><td colspan="7"></td></tr><tr><td class="h">125</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# ref types must match</td></tr>
<tr><td class="h">126</td><td><div class="c3">128</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L126">100</a></div></td><td></td><td></td><td></td><td><div>181</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return if ref $x ne ref $y;</td></tr>
<tr><td class="h">127</td><td colspan="7"></td></tr><tr><td class="h">128</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# objects match only if they are the same object</td></tr>
<tr><td class="h">129</td><td><div class="c3">105</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L129">100</a></div></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--condition.html#L129">100</a></div></td><td></td><td></td><td><div>230</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ( blessed($x) || ref($x) eq &#39;CODE&#39; ) {</td></tr>
<tr><td class="h">130</td><td><div class="c3">15</div></td><td></td><td></td><td></td><td></td><td><div>56</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return refaddr($x) == refaddr($y);</td></tr>
<tr><td class="h">131</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">132</td><td colspan="7"></td></tr><tr><td class="h">133</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# don&#39;t smartmatch on arrays because it recurses</td></tr>
<tr><td class="h">134</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# which leads to the same quirks that we want to avoid</td></tr>
<tr><td class="h">135</td><td><div class="c3">90</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L135">100</a></div></td><td></td><td></td><td></td><td><div>83</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ( ref($x) eq &#39;ARRAY&#39; ) {</td></tr>
<tr><td class="h">136</td><td><div class="c3">7</div><div class="c3">7</div><div class="c3">7</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L136">100</a></div></td><td></td><td></td><td></td><td><div>3</div><div>5</div><div>13</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return if $#{$x} != $#{$y};</td></tr>
<tr><td class="h">137</td><td colspan="7"></td></tr><tr><td class="h">138</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# recurse to handle nested structures</td></tr>
<tr><td class="h">139</td><td><div class="c3">6</div><div class="c3">6</div></td><td></td><td></td><td></td><td></td><td><div>4</div><div>8</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ( 0 .. $#{$x} ) {</td></tr>
<tr><td class="h">140</td><td><div class="c3">17</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L140">100</a></div></td><td></td><td></td><td></td><td><div>20</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return if !_match( $x-&gt;[$_], $y-&gt;[$_] );</td></tr>
<tr><td class="h">141</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">142</td><td><div class="c3">4</div></td><td></td><td></td><td></td><td></td><td><div>11</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;</td></tr>
<tr><td class="h">143</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">144</td><td colspan="7"></td></tr><tr><td class="h">145</td><td><div class="c3">83</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L145">100</a></div></td><td></td><td></td><td></td><td><div>75</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;if ( ref($x) eq &#39;HASH&#39; ) {</td></tr>
<tr><td class="h">146</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# smartmatch only matches the hash keys</td></tr>
<tr><td class="h">147</td><td><div class="c3">4</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L147">100</a></div></td><td></td><td></td><td></td><td><div>10</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return if not $x ~~ $y;</td></tr>
<tr><td class="h">148</td><td colspan="7"></td></tr><tr><td class="h">149</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# ... but we want to match the hash values too</td></tr>
<tr><td class="h">150</td><td><div class="c3">3</div><div class="c3">3</div></td><td></td><td></td><td></td><td></td><td><div>2</div><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach ( keys %{$x} ) {</td></tr>
<tr><td class="h">151</td><td><div class="c3">5</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L151">100</a></div></td><td></td><td></td><td></td><td><div>6</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return if !_match( $x-&gt;{$_}, $y-&gt;{$_} );</td></tr>
<tr><td class="h">152</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">153</td><td><div class="c3">2</div></td><td></td><td></td><td></td><td></td><td><div>4</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return 1;</td></tr>
<tr><td class="h">154</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;}</td></tr>
<tr><td class="h">155</td><td colspan="7"></td></tr><tr><td class="h">156</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# avoid smartmatch doing number matches on strings</td></tr>
<tr><td class="h">157</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;# e.g. &#39;5x&#39; ~~ 5 is true</td></tr>
<tr><td class="h">158</td><td><div class="c3">79</div></td><td><div class="c3" title="T/F"><a href="blib-lib-Test-Mocha-Method-pm--branch.html#L158">100</a></div></td><td><div class="c3"><a href="blib-lib-Test-Mocha-Method-pm--condition.html#L158">100</a></div></td><td></td><td></td><td><div>213</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return if looks_like_number($x) xor looks_like_number($y);</td></tr>
<tr><td class="h">159</td><td colspan="7"></td></tr><tr><td class="h">160</td><td><div class="c3">75</div></td><td></td><td></td><td></td><td></td><td><div>233</div></td><td class="s">&nbsp;&nbsp;&nbsp;&nbsp;return $x ~~ $y;</td></tr>
<tr><td class="h">161</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">}</td></tr>
<tr><td class="h">162</td><td colspan="7"></td></tr><tr><td class="h">163</td><td></td><td></td><td></td><td></td><td></td><td></td><td class="s">1;</td></tr>
</table>
</body>
</html>