<?xml version="1.0" ?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage lines-valid="142" lines-covered="130" line-rate="0.9155" branches-valid="138" branches-covered="63" branch-rate="0.45649999999999996" timestamp="1500519593110" complexity="0" version="0.1">
  <sources>
    <source>/Users/willyliu/Documents/projects/kkbox-javascript-sdk</source>
  </sources>
  <packages>
    <package name="src" line-rate="0.8571" branch-rate="0.25">
      <classes>
        <class name="Endpoint.js" filename="src/Endpoint.js" line-rate="1" branch-rate="0.5">
          <methods>
            <method name="(anonymous_0)" hits="1" signature="()V">
              <lines>
                <line number="1" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="2" hits="1" branch="true" condition-coverage="50% (1/2)"/>
            <line number="7" hits="1" branch="false"/>
            <line number="12" hits="1" branch="false"/>
            <line number="17" hits="1" branch="false"/>
            <line number="22" hits="1" branch="false"/>
            <line number="27" hits="1" branch="false"/>
            <line number="32" hits="1" branch="false"/>
            <line number="37" hits="1" branch="false"/>
            <line number="42" hits="1" branch="false"/>
            <line number="47" hits="1" branch="false"/>
            <line number="52" hits="1" branch="false"/>
            <line number="62" hits="1" branch="false"/>
            <line number="67" hits="1" branch="false"/>
            <line number="72" hits="1" branch="false"/>
            <line number="77" hits="1" branch="false"/>
            <line number="79" hits="1" branch="false"/>
            <line number="84" hits="1" branch="false"/>
            <line number="89" hits="1" branch="false"/>
            <line number="94" hits="1" branch="false"/>
            <line number="99" hits="1" branch="false"/>
            <line number="104" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="catchError.js" filename="src/catchError.js" line-rate="0.3333" branch-rate="0">
          <methods>
            <method name="(anonymous_0)" hits="0" signature="()V">
              <lines>
                <line number="4" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_1)" hits="0" signature="()V">
              <lines>
                <line number="15" hits="0"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="4" hits="1" branch="false"/>
            <line number="5" hits="0" branch="true" condition-coverage="0% (0/2)"/>
            <line number="6" hits="0" branch="false"/>
            <line number="8" hits="0" branch="false"/>
            <line number="15" hits="1" branch="false"/>
            <line number="16" hits="0" branch="false"/>
          </lines>
        </class>
      </classes>
    </package>
    <package name="src.api" line-rate="0.914" branch-rate="0.4561">
      <classes>
        <class name="AlbumFetcher.js" filename="src/api/AlbumFetcher.js" line-rate="1" branch-rate="0.6667000000000001">
          <methods>
            <method name="(anonymous_1)" hits="3" signature="()V">
              <lines>
                <line number="12" hits="3"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="3" signature="()V">
              <lines>
                <line number="28" hits="3"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="48" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_5)" hits="3" signature="()V">
              <lines>
                <line number="61" hits="3"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="3" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="3" branch="false"/>
            <line number="30" hits="3" branch="false"/>
            <line number="40" hits="1" branch="false"/>
            <line number="49" hits="1" branch="false"/>
            <line number="61" hits="6" branch="true" condition-coverage="100% (2/2)"/>
            <line number="62" hits="3" branch="false"/>
          </lines>
        </class>
        <class name="ArtistFetcher.js" filename="src/api/ArtistFetcher.js" line-rate="1" branch-rate="0.75">
          <methods>
            <method name="(anonymous_1)" hits="2" signature="()V">
              <lines>
                <line number="12" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="2" signature="()V">
              <lines>
                <line number="28" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="2" signature="()V">
              <lines>
                <line number="52" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_5)" hits="2" signature="()V">
              <lines>
                <line number="69" hits="2"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="2" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="2" branch="false"/>
            <line number="30" hits="2" branch="false"/>
            <line number="40" hits="1" branch="false"/>
            <line number="52" hits="4" branch="true" condition-coverage="100% (2/2)"/>
            <line number="53" hits="2" branch="false"/>
            <line number="69" hits="4" branch="true" condition-coverage="100% (2/2)"/>
            <line number="70" hits="2" branch="false"/>
          </lines>
        </class>
        <class name="FeaturedPlaylistCategoryFetcher.js" filename="src/api/FeaturedPlaylistCategoryFetcher.js" line-rate="1" branch-rate="0.6667000000000001">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="28" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="50" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_5)" hits="1" signature="()V">
              <lines>
                <line number="63" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="29" hits="1" branch="false"/>
            <line number="41" hits="1" branch="false"/>
            <line number="51" hits="1" branch="false"/>
            <line number="63" hits="2" branch="true" condition-coverage="100% (2/2)"/>
            <line number="64" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="FeaturedPlaylistFetcher.js" filename="src/api/FeaturedPlaylistFetcher.js" line-rate="1" branch-rate="0.6667000000000001">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="24" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="24" hits="2" branch="true" condition-coverage="100% (2/2)"/>
            <line number="25" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="Fetcher.js" filename="src/api/Fetcher.js" line-rate="1" branch-rate="0.9">
          <methods>
            <method name="(anonymous_0)" hits="13" signature="()V">
              <lines>
                <line number="9" hits="13"/>
              </lines>
            </method>
            <method name="(anonymous_1)" hits="9" signature="()V">
              <lines>
                <line number="30" hits="9"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="2" signature="()V">
              <lines>
                <line number="36" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="53" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="9" hits="13" branch="true" condition-coverage="100% (4/4)"/>
            <line number="13" hits="13" branch="false"/>
            <line number="30" hits="9" branch="false"/>
            <line number="31" hits="9" branch="false"/>
            <line number="37" hits="2" branch="false"/>
            <line number="53" hits="1" branch="false"/>
            <line number="54" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="GenreStationFetcher.js" filename="src/api/GenreStationFetcher.js" line-rate="1" branch-rate="0.6667000000000001">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="30" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="45" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="56" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="30" hits="2" branch="true" condition-coverage="100% (2/2)"/>
            <line number="31" hits="1" branch="false"/>
            <line number="47" hits="1" branch="false"/>
            <line number="57" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="Http.js" filename="src/api/Http.js" line-rate="1" branch-rate="1">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="11" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="28" signature="()V">
              <lines>
                <line number="26" hits="28"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="40" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="16" hits="1" branch="false"/>
            <line number="26" hits="28" branch="true" condition-coverage="100% (2/2)"/>
            <line number="27" hits="28" branch="false"/>
            <line number="40" hits="1" branch="true" condition-coverage="100% (2/2)"/>
            <line number="41" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="MoodStationFetcher.js" filename="src/api/MoodStationFetcher.js" line-rate="1" branch-rate="0.5">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="28" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="40" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="52" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="29" hits="1" branch="false"/>
            <line number="40" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="43" hits="1" branch="false"/>
            <line number="53" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="SearchFetcher.js" filename="src/api/SearchFetcher.js" line-rate="0.5556" branch-rate="0.14">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="0" signature="()V">
              <lines>
                <line number="43" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="62" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="76" hits="1"/>
              </lines>
            </method>
            <method name="doFilter" hits="1" signature="()V">
              <lines>
                <line number="87" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_6)" hits="0" signature="()V">
              <lines>
                <line number="89" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_7)" hits="0" signature="()V">
              <lines>
                <line number="95" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_8)" hits="0" signature="()V">
              <lines>
                <line number="117" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_9)" hits="0" signature="()V">
              <lines>
                <line number="135" hits="0"/>
              </lines>
            </method>
            <method name="(anonymous_10)" hits="0" signature="()V">
              <lines>
                <line number="148" hits="0"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="49" hits="0" branch="true" condition-coverage="0% (0/14)"/>
            <line number="51" hits="0" branch="false"/>
            <line number="62" hits="1" branch="true" condition-coverage="100% (2/2)"/>
            <line number="65" hits="1" branch="false"/>
            <line number="76" hits="2" branch="true" condition-coverage="100% (2/2)"/>
            <line number="77" hits="1" branch="false"/>
            <line number="87" hits="1" branch="false"/>
            <line number="88" hits="1" branch="true" condition-coverage="50% (1/2)"/>
            <line number="89" hits="0" branch="false"/>
            <line number="95" hits="0" branch="false"/>
            <line number="117" hits="0" branch="false"/>
            <line number="135" hits="0" branch="false"/>
            <line number="148" hits="0" branch="false"/>
            <line number="161" hits="0" branch="false"/>
            <line number="163" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="SharedPlaylistFetcher.js" filename="src/api/SharedPlaylistFetcher.js" line-rate="1" branch-rate="0.6667000000000001">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="28" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="48" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_5)" hits="1" signature="()V">
              <lines>
                <line number="61" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="30" hits="1" branch="false"/>
            <line number="40" hits="1" branch="false"/>
            <line number="49" hits="1" branch="false"/>
            <line number="61" hits="2" branch="true" condition-coverage="100% (2/2)"/>
            <line number="62" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="TicketFetcher.js" filename="src/api/TicketFetcher.js" line-rate="1" branch-rate="1">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="28" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="13" hits="1" branch="false"/>
            <line number="30" hits="1" branch="false"/>
            <line number="40" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="TrackFetcher.js" filename="src/api/TrackFetcher.js" line-rate="1" branch-rate="0.5">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="28" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="1" signature="()V">
              <lines>
                <line number="39" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="48" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="3" branch="false"/>
            <line number="12" hits="1" branch="true" condition-coverage="50% (2/4)"/>
            <line number="13" hits="1" branch="false"/>
            <line number="30" hits="1" branch="false"/>
            <line number="40" hits="1" branch="false"/>
            <line number="49" hits="1" branch="false"/>
          </lines>
        </class>
      </classes>
    </package>
    <package name="src.auth" line-rate="1" branch-rate="0.5">
      <classes>
        <class name="AuthorizationCodeFlow.js" filename="src/auth/AuthorizationCodeFlow.js" line-rate="1" branch-rate="0.5">
          <methods>
            <method name="(anonymous_0)" hits="1" signature="()V">
              <lines>
                <line number="12" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="35" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="48" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="1" branch="false"/>
            <line number="16" hits="1" branch="false"/>
            <line number="35" hits="2" branch="true" condition-coverage="50% (4/8)"/>
            <line number="37" hits="1" branch="false"/>
            <line number="49" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="ClientCredentialsFlow.js" filename="src/auth/ClientCredentialsFlow.js" line-rate="1" branch-rate="1">
          <methods>
            <method name="(anonymous_0)" hits="2" signature="()V">
              <lines>
                <line number="10" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_1)" hits="2" signature="()V">
              <lines>
                <line number="23" hits="2"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="14" hits="2" branch="false"/>
            <line number="24" hits="2" branch="false"/>
          </lines>
        </class>
        <class name="DeviceFlow.js" filename="src/auth/DeviceFlow.js" line-rate="1" branch-rate="0.5">
          <methods>
            <method name="(anonymous_1)" hits="1" signature="()V">
              <lines>
                <line number="16" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="2" signature="()V">
              <lines>
                <line number="36" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="2" signature="()V">
              <lines>
                <line number="40" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="57" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_5)" hits="1" signature="()V">
              <lines>
                <line number="66" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_6)" hits="1" signature="()V">
              <lines>
                <line number="75" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="6" branch="false"/>
            <line number="20" hits="1" branch="false"/>
            <line number="36" hits="2" branch="false"/>
            <line number="37" hits="2" branch="false"/>
            <line number="42" hits="2" branch="false"/>
            <line number="57" hits="3" branch="true" condition-coverage="50% (6/12)"/>
            <line number="58" hits="1" branch="false"/>
            <line number="66" hits="1" branch="false"/>
            <line number="76" hits="1" branch="false"/>
          </lines>
        </class>
        <class name="TokenFetcher.js" filename="src/auth/TokenFetcher.js" line-rate="1" branch-rate="1">
          <methods>
            <method name="(anonymous_1)" hits="2" signature="()V">
              <lines>
                <line number="15" hits="2"/>
              </lines>
            </method>
            <method name="(anonymous_2)" hits="1" signature="()V">
              <lines>
                <line number="35" hits="1"/>
              </lines>
            </method>
            <method name="(anonymous_3)" hits="5" signature="()V">
              <lines>
                <line number="48" hits="5"/>
              </lines>
            </method>
            <method name="(anonymous_4)" hits="1" signature="()V">
              <lines>
                <line number="66" hits="1"/>
              </lines>
            </method>
          </methods>
          <lines>
            <line number="1" hits="6" branch="false"/>
            <line number="19" hits="2" branch="false"/>
            <line number="36" hits="1" branch="false"/>
            <line number="49" hits="5" branch="false"/>
            <line number="67" hits="1" branch="false"/>
          </lines>
        </class>
      </classes>
    </package>
  </packages>
</coverage>
