<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd">
<report name="novus-checkout-service">
  <sessioninfo id="ci-runner-04" start="1786000401000" dump="1786000462000"/>
  <group name="checkout-service">
    <package name="src/cart">
      <class name="src/cart/pricing" sourcefilename="pricing.js">
        <method name="unitPrice" desc="()V" line="2">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="quantityMultiplier" desc="()V" line="8">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="roundHalfUp" desc="()V" line="13">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="applyTax" desc="()V" line="19">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="bulkRate" desc="()V" line="25">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="convertCurrency" desc="()V" line="31">
          <counter type="INSTRUCTION" missed="12" covered="0"/>
          <counter type="LINE" missed="3" covered="0"/>
          <counter type="COMPLEXITY" missed="1" covered="0"/>
          <counter type="METHOD" missed="1" covered="0"/>
        </method>
        <counter type="INSTRUCTION" missed="16" covered="160"/>
        <counter type="BRANCH" missed="2" covered="6"/>
        <counter type="LINE" missed="4" covered="40"/>
        <counter type="COMPLEXITY" missed="1" covered="9"/>
        <counter type="METHOD" missed="1" covered="5"/>
        <counter type="CLASS" missed="0" covered="1"/>
      </class>
      <sourcefile name="pricing.js">
        <line nr="2" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="3" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="4" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="5" mi="0" ci="4" mb="0" cb="2"/>
        <line nr="6" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="8" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="9" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="10" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="11" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="12" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="13" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="15" mi="0" ci="4" mb="0" cb="2"/>
        <line nr="16" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="17" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="18" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="19" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="20" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="22" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="23" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="24" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="25" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="26" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="27" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="29" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="30" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="31" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="32" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="33" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="34" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="36" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="37" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="38" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="39" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="40" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="41" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="43" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="44" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="45" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="46" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="47" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="48" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="50" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="51" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="52" mi="0" ci="4" mb="0" cb="0"/>
        <counter type="LINE" missed="4" covered="40"/>
        <counter type="BRANCH" missed="2" covered="6"/>
      </sourcefile>
      <class name="src/cart/discounts" sourcefilename="discounts.js">
        <method name="percentageDiscount" desc="()V" line="2">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="stackDiscounts" desc="()V" line="8">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="isCouponExpired" desc="()V" line="13">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="loyaltyTier" desc="()V" line="19">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="freeShippingThreshold" desc="()V" line="25">
          <counter type="INSTRUCTION" missed="12" covered="0"/>
          <counter type="LINE" missed="3" covered="0"/>
          <counter type="COMPLEXITY" missed="1" covered="0"/>
          <counter type="METHOD" missed="1" covered="0"/>
        </method>
        <counter type="INSTRUCTION" missed="20" covered="112"/>
        <counter type="BRANCH" missed="2" covered="4"/>
        <counter type="LINE" missed="5" covered="28"/>
        <counter type="COMPLEXITY" missed="1" covered="7"/>
        <counter type="METHOD" missed="1" covered="4"/>
        <counter type="CLASS" missed="0" covered="1"/>
      </class>
      <sourcefile name="discounts.js">
        <line nr="2" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="3" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="4" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="5" mi="0" ci="4" mb="0" cb="2"/>
        <line nr="6" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="8" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="9" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="10" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="11" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="12" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="13" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="15" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="16" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="17" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="18" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="19" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="20" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="22" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="23" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="24" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="25" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="26" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="27" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="29" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="30" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="31" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="32" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="33" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="34" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="36" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="37" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="38" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="39" mi="0" ci="4" mb="0" cb="0"/>
        <counter type="LINE" missed="5" covered="28"/>
        <counter type="BRANCH" missed="2" covered="4"/>
      </sourcefile>
      <counter type="LINE" missed="9" covered="68"/>
      <counter type="BRANCH" missed="4" covered="10"/>
      <counter type="METHOD" missed="2" covered="9"/>
      <counter type="CLASS" missed="0" covered="2"/>
    </package>
    <package name="src/checkout">
      <class name="src/checkout/session" sourcefilename="session.js">
        <method name="createSession" desc="()V" line="2">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="expireSession" desc="()V" line="8">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="restoreCart" desc="()V" line="13">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="rotateToken" desc="()V" line="19">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="persistCart" desc="()V" line="25">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="readSessionCookie" desc="()V" line="31">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <counter type="INSTRUCTION" missed="12" covered="144"/>
        <counter type="BRANCH" missed="2" covered="4"/>
        <counter type="LINE" missed="3" covered="36"/>
        <counter type="COMPLEXITY" missed="0" covered="9"/>
        <counter type="METHOD" missed="0" covered="6"/>
        <counter type="CLASS" missed="0" covered="1"/>
      </class>
      <sourcefile name="session.js">
        <line nr="2" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="3" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="4" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="5" mi="0" ci="4" mb="0" cb="2"/>
        <line nr="6" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="8" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="9" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="10" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="11" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="12" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="13" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="15" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="16" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="17" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="18" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="19" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="20" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="22" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="23" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="24" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="25" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="26" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="27" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="29" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="30" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="31" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="32" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="33" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="34" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="36" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="37" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="38" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="39" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="40" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="41" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="43" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="44" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="45" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="46" mi="0" ci="4" mb="0" cb="0"/>
        <counter type="LINE" missed="3" covered="36"/>
        <counter type="BRANCH" missed="2" covered="4"/>
      </sourcefile>
      <class name="src/checkout/receipt" sourcefilename="receipt.js">
        <method name="renderTotals" desc="()V" line="2">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="renderLineItems" desc="()V" line="8">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <method name="formatCurrency" desc="()V" line="13">
          <counter type="INSTRUCTION" missed="0" covered="12"/>
          <counter type="LINE" missed="0" covered="3"/>
          <counter type="COMPLEXITY" missed="0" covered="1"/>
          <counter type="METHOD" missed="0" covered="1"/>
        </method>
        <counter type="INSTRUCTION" missed="4" covered="92"/>
        <counter type="BRANCH" missed="1" covered="3"/>
        <counter type="LINE" missed="1" covered="23"/>
        <counter type="COMPLEXITY" missed="0" covered="5"/>
        <counter type="METHOD" missed="0" covered="3"/>
        <counter type="CLASS" missed="0" covered="1"/>
      </class>
      <sourcefile name="receipt.js">
        <line nr="2" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="3" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="4" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="5" mi="0" ci="4" mb="0" cb="2"/>
        <line nr="6" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="8" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="9" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="10" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="11" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="12" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="13" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="15" mi="0" ci="4" mb="1" cb="1"/>
        <line nr="16" mi="4" ci="0" mb="0" cb="0"/>
        <line nr="17" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="18" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="19" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="20" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="22" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="23" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="24" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="25" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="26" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="27" mi="0" ci="4" mb="0" cb="0"/>
        <line nr="29" mi="0" ci="4" mb="0" cb="0"/>
        <counter type="LINE" missed="1" covered="23"/>
        <counter type="BRANCH" missed="1" covered="3"/>
      </sourcefile>
      <counter type="LINE" missed="4" covered="59"/>
      <counter type="BRANCH" missed="3" covered="7"/>
      <counter type="METHOD" missed="0" covered="9"/>
      <counter type="CLASS" missed="0" covered="2"/>
    </package>
  </group>
  <counter type="INSTRUCTION" missed="52" covered="508"/>
  <counter type="BRANCH" missed="7" covered="17"/>
  <counter type="LINE" missed="13" covered="127"/>
  <counter type="COMPLEXITY" missed="2" covered="30"/>
  <counter type="METHOD" missed="2" covered="18"/>
  <counter type="CLASS" missed="0" covered="4"/>
</report>
