packages feed

Hastructure-0.45.0: test/UT/CeTest.hs

module UT.CeTest(liqTest)
where

import Test.Tasty
import Test.Tasty.HUnit

import qualified Data.Time as T
import Lib
import Util
import Stmt
import Data.Ratio
import qualified Data.DList as DL
import Types
import CreditEnhancement
import qualified InterestRate as IR



liqTest = testGroup "Pricing Tests"
  [
    let
        liqStmt1 = [
            -- SupportTxn (toDate "20220101") 100,
            ]
        liq0 = LiqFacility "Liq0" (FixSupport 1000) 100 (Just 500) Nothing Nothing Nothing 
                (Just 0.03) (Just 0.08) Nothing 0 0 (toDate "20220101")
                Nothing Nothing
    in
      testCase "First Accure" $
        assertEqual "First Accure"  
          (Just (Statement (DL.fromList [SupportTxn (toDate "20220101") (Just 500) 100 0 0 0 Empty
                            ,SupportTxn (toDate "20220201") (Just 500) 100 0.25 3.39 0 (LiquidationSupportInt 0.25 3.39)])))
          (liqStmt (accrueLiqProvider (toDate "20220201") liq0 ))
    ,let
        liqStmt1 = DL.fromList [
            SupportTxn (toDate "20220101") (Just 500) 100 0 0 0 Empty
            ,SupportTxn (toDate "20220201") (Just 800) 100 0.25 3.39 0 (LiquidationSupportInt 0.25 3.39)
            ]
        liq1 = LiqFacility "Liq1" (FixSupport 1000) 100 (Just 800) Nothing (Just (IR.Fix DC_ACT_365 0.03)) (Just (IR.Fix DC_ACT_365 0.08))  
                (Just 0.03) (Just 0.08) Nothing 0.25 3.39 (toDate "20220201")
                Nothing (Just (Statement liqStmt1))

    in
      testCase "Accure on unused balance" $
        assertEqual "with one history txn"  
          (Just (Statement (DL.fromList [SupportTxn (toDate "20220101") (Just 500) 100 0 0 0 Empty
                            ,SupportTxn (toDate "20220201") (Just 800) 100 0.25 3.39 0 (LiquidationSupportInt 0.25 3.39)
                            ,SupportTxn (toDate "20220301") (Just 800) 100 0.48 8.29 0 (LiquidationSupportInt 0.23 4.9)])))
          (liqStmt (accrueLiqProvider (toDate "20220301") liq1 )) 
    ,let
        liqStmt1 = DL.fromList [
            SupportTxn (toDate "20220101") (Just 500) 100 0 0 0 Empty
            ,SupportTxn (toDate "20220201") (Just 800) 100 0.25 3.39 0 (LiquidationSupportInt 0.25 3.39)
            ,SupportTxn (toDate "20220301") (Just 1000) 100 0.48 8.29 0 (LiquidationSupportInt 0.23 4.9)
            ]
        liq1 = LiqFacility "Liq2" (FixSupport 1000) 100 (Just 1000) Nothing (Just (IR.Fix DC_ACT_365 0.03)) (Just (IR.Fix DC_ACT_365 0.08))  
                (Just 0.03) (Just 0.08) Nothing 0.25 3.39 (toDate "20220101")
                Nothing (Just (Statement liqStmt1))

    in
      testCase "Accure on unused balance " $
        assertEqual "with multiple history txn"  
          (Just (Statement (DL.fromList [SupportTxn (toDate "20220101") (Just 500) 100 0 0 0 Empty
                            ,SupportTxn (toDate "20220201") (Just 800) 100 0.25 3.39 0 (LiquidationSupportInt 0.25 3.39)
                            ,SupportTxn (toDate "20220301") (Just 1000) 100 0.48 8.29 0 (LiquidationSupportInt 0.23 4.9)
                            ,SupportTxn (toDate "20220401") (Just 1000) 100 0.99 18.49 0 (LiquidationSupportInt 0.74 15.10)
                            ])))
          (liqStmt (accrueLiqProvider (toDate "20220401") liq1 ))    
  ]