package Ġcom . example . contract Ċ Ċ import Ġcom . example . state . Bond State Ċ import Ġcom . example . contract . Bond Contract Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġnet . cord a . core . identity . C ord a X 5 0 0 Name Ċ import Ġnet . cord a . finance . USD Ċ import Ġnet . cord a . testing . core . Test Identity Ċ import Ġnet . cord a . testing . node . Mock Services Ċ import Ġnet . cord a . testing . node . ledger Ċ import Ġorg . junit . Test Ċ import Ġjava . time . Instant Ċ Ċ class ĠB ond Contract Tests Ġ{ ĊĠĠĠ Ġ// ĠGenerate Ġmock Ġservices ĊĠĠĠ Ġprivate Ġval Ġledger Services Ġ= ĠMock Services () ĊĠĠĠ Ġprivate Ġval Ġborrow er Ġ= ĠTest Identity ( C ord a X 5 0 0 Name (" Me ga Cor p ", Ġ" L ondon ", Ġ" GB ")) ĊĠĠĠ Ġprivate Ġval Ġl ender Ġ= ĠTest Identity ( C ord a X 5 0 0 Name (" Me ga Cor p ", Ġ" L ondon ", Ġ" GB ")) ĊĠĠĠ Ġprivate Ġval Ġfinancial Ġ= ĠTest Identity ( C ord a X 5 0 0 Name (" Mini Cor p ", Ġ" New ĠYork ", Ġ" US ")) ĊĠĠĠ Ġprivate Ġval Ġdate Ġ= ĠInstant . now () ĊĠĠĠ Ġprivate Ġval Ġamount Ġ= ĠAmount ( 1 , ĠUSD ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` Check Ġall Ġcomponent Ġcontract `() Ġ{ ĊĠĠĠĠĠĠĠ Ġledger Services . ledger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOutput Ġinsert Ġ( Contract _ id Ġ, State ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( Bond Contract . Bond _ CONTRACT _ ID , ĠB ond State ( amount , Ġborrow er . party , Ġl ender . party )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCommand Ġinsert Ġ( list Ġof Ġsigner , command ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand ( listOf ( borrow er . publicKey , Ġl ender . publicKey , Ġfinancial . publicKey ), ĠB ond Contract . Commands . Issue ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` transaction Ġmust Ġinclude ĠIssue Ġcommand `() Ġ{ ĊĠĠĠĠĠĠĠ Ġledger Services . ledger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( Bond Contract . Bond _ CONTRACT _ ID , ĠB ond State ( amount , Ġborrow er . party , Ġl ender . party )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand ( listOf ( borrow er . publicKey , Ġl ender . publicKey , Ġfinancial . publicKey ), ĠB ond Contract . Commands . Issue ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` transaction Ġmust Ġinclude ĠUpdate Ġcommand `() Ġ{ ĊĠĠĠĠĠĠĠ Ġledger Services . ledger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġledger Services . ledger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( Bond Contract . Bond _ CONTRACT _ ID , ĠB ond State ( amount , Ġborrow er . party , Ġl ender . party )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand ( listOf ( borrow er . publicKey , Ġl ender . publicKey , Ġfinancial . publicKey ), ĠB ond Contract . Commands . Issue ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput ( Bond Contract . Bond _ CONTRACT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( Bond Contract . Bond _ CONTRACT _ ID , ĠB ond State ( amount , Ġborrow er . party , Ġl ender . party )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand ( listOf ( borrow er . publicKey , Ġl ender . publicKey , Ġfinancial . publicKey ), ĠB ond Contract . Commands . Update ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifies () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` transaction Ġmust Ġinclude ĠRe deem Ġcommand `() Ġ{ ĊĠĠĠĠĠĠĠ Ġledger Services . ledger Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput ( Bond Contract . Bond _ CONTRACT _ ID , ĠB ond State ( amount , Ġborrow er . party , Ġl ender . party )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfails () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcommand ( listOf ( borrow er . publicKey , Ġl ender . publicKey , Ġfinancial . publicKey ), ĠB ond Contract . Commands . Issue ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverifies () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }