package Ġcom . template Ċ Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . states . E vol vable TokenType Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . states . F ung ible Token Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . states . Non F ung ible Token Ċ import Ġcom . r 3 . cord a . lib . tokens . contracts . types . TokenType Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . issue . Issue Tokens Flow Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . rpc . Issue Tokens Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . move . add Move F ung ible Tokens Ċ import Ġcom . r 3 . cord a . lib . tokens . workflows . flows . move . add Move Non F ung ible Tokens Ċ import Ġcom . template . flows . Delivery Vers us Payment Token Flow Ċ import Ġcom . template . flows . IO U Token Issue Flow Ċ import Ġcom . template . states .* Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġnet . cord a . core . contracts . Contract State Ċ import Ġnet . cord a . core . utilities . get OrThrow Ċ import Ġnet . cord a . testing . node . Mock Network Ċ import Ġnet . cord a . testing . node . Mock Network Parameters Ċ import Ġnet . cord a . testing . node . Test C ord app Ċ import Ġorg . junit . After Ċ import Ġorg . junit . Before Ċ import Ġorg . junit . Test Ċ import Ġsun . reflect . gener ics . reflect ive Objects . Parameterized Type Impl Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠToken Sdk Ex ercises Ġ{ ĊĠĠĠ Ġprivate Ġval Ġnetwork Ġ= ĠMock Network ( Mock Network Parameters ( cord apps ForAll Nodes Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest C ord app . find C ord app (" com . template . contracts "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest C ord app . find C ord app (" com . template . flows "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest C ord app . find C ord app (" com . r 3 . cord a . lib . tokens . workflows "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTest C ord app . find C ord app (" com . r 3 . cord a . lib . tokens . contracts ") ĊĠĠĠ Ġ))) ĊĠĠĠ Ġprivate Ġval Ġa Ġ= Ġnetwork . createNode () ĊĠĠĠ Ġprivate Ġval Ġb Ġ= Ġnetwork . createNode () ĊĠĠĠ Ġprivate Ġval Ġc Ġ= Ġnetwork . createNode () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf ( a , Ġb , Ġc ). forEach Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġsetup () Ġ= Ġnetwork . run Network () ĊĊĠĠĠ Ġ@ After ĊĠĠĠ Ġfun ĠtearDown () Ġ= Ġnetwork . stop Nodes () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ Example Fixed Token ]. ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠFixed ĠTokens Ġneed Ġto Ġextend Ġthe Ġ[ TokenType ] Ġclass Ġfrom ĠToken ĠSDK . ĊĠĠĠĠ Ġ* Ġ- Ġ[ TokenType ] Ġclasses Ġneed Ġto Ġoverride Ġtwo Ġfields : ĊĠĠĠĠ Ġ* Ġ-- Ġ[ token Identifier ], ĠString Ġidentifying Ġthe Ġtoken , Ġused Ġin Ġcontracts Ġto Ġtoken Ġstates Ġare Ġof Ġthe Ġsame Ġtype . ĊĠĠĠĠ Ġ* Ġ-- Ġ[ fraction Digits ], ĠInt Ġdefining Ġthe Ġnumber Ġof Ġdecimal Ġdigits Ġ( ex . Ġ 2 Ġ=> Ġ 1 0 . 0 0 ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Fixed Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( TokenType :: class . java . isAssignableFrom ( Example Fixed Token :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ Example E vol vable Token ]. ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠE vol vable ĠTokens Ġneed Ġto Ġextend Ġthe Ġ[ E vol vable TokenType ] Ġclass Ġfrom ĠToken ĠSDK . ĊĠĠĠĠ Ġ* Ġ- Ġ[ E vol vable TokenType ] Ġclasses Ġneed Ġto Ġoverride Ġthree Ġfields : ĊĠĠĠĠ Ġ* Ġ-- Ġ[ maint ainers ], ĠList < Party > Ġwhich Ġspecifies Ġwhich Ġparties Ġwill Ġbe Ġnotified Ġwhen Ġthe Ġtoken Ġis Ġupdated . ĊĠĠĠĠ Ġ* Ġ-- Ġ[ fraction Digits ], ĠInt Ġdefining Ġthe Ġnumber Ġof Ġdecimal Ġdigits Ġ( ex . Ġ 2 Ġ=> Ġ 1 0 . 0 0 ). ĊĠĠĠĠ Ġ* Ġ-- Ġ[ linear Id ] Ġ- Ġremember Ġthat ĠE vol vable ĠTokens Ġhave Ġa Ġlinear Id Ġsince Ġthey Ġcan Ġev olve Ġover Ġtime . ĊĠĠĠĠ Ġ* Ġ- ĠIn Ġaddition Ġto Ġthese Ġfields , Ġwe Ġcan Ġhave Ġany Ġnumber Ġof Ġadditional Ġfields Ġlike Ġany Ġother Ġ[ Linear State ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create E vol vable Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġassert ( E vol vable TokenType :: class . java . isAssignableFrom ( Example E vol vable Token :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ create Non F ung ible Fixed Token ] Ġmethod . ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠTokens Ġcan Ġbe ĠFixed Ġvers us ĠE vol vable , Ġbut Ġalso ĠF ung ible Ġvers us ĠNon - fung ible . ĊĠĠĠĠ Ġ* Ġ- ĠFor Ġour Ġmethod , Ġwe Ġwant Ġto Ġreturn Ġa Ġ[ Non F ung ible Token ] Ġobject Ġcontaining Ġan Ġ[ Example Fixed Token ] ĊĠĠĠĠ Ġ* Ġ- Ġ[ Non F ung ible Token ] Ġtakes Ġ 3 Ġparameters : ĊĠĠĠĠ Ġ* Ġ-- Ġan Ġ[ Iss ued TokenType ] Ġinstance , Ġa Ġtoken Ġholder Ġ[ Party ], Ġand Ġa Ġlinear Id Ġto Ġidentify Ġthis Ġ[ Non F ung ible Token ]. ĊĠĠĠĠ Ġ* Ġ-- Ġ[ Iss ued TokenType ] Ġis Ġa Ġwrapper Ġobject Ġthat Ġpairs Ġa Ġ[ TokenType ] Ġwith Ġa Ġissuer Ġ[ Party ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Non F ung ible Fixed Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġissuer Ġ= Ġb . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġa . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate Non F ung ible Fixed Token ( issuer , Ġholder ) ĊĠĠĠĠĠĠĠ Ġassert ( Non F ung ible Token :: class . java . isAssignableFrom ( result !! :: class . java )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Example Fixed Token :: class . java , Ġresult . token Type . token Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ create Non F ung ible E vol vable Token ] Ġmethod . ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠNow Ġwe Ġwant Ġto Ġcreate Ġa Ġ[ Non F ung ible Token ] Ġcontaining Ġan Ġ[ Example E vol vable Token ] ĊĠĠĠĠ Ġ* Ġ- ĠThis Ġwill Ġbe Ġthe Ġsame Ġas Ġin Ġthe Ġprevious Ġexercise , Ġexcept Ġthat Ġsince ĠE vol vable Tokens Ġuse ĊĠĠĠĠ Ġ* Ġa Ġ[ Token Pointer ] Ġto Ġpair Ġthe Ġe vol vable Ġtoken Ġdata Ġ[ Linear State ] Ġwith Ġthe Ġactual Ġ[ TokenType ]. ĊĠĠĠĠ Ġ* Ġ- ĠOur Ġ[ Iss ued TokenType ] Ġwill Ġwrap Ġour Ġ[ Token Pointer ] Ġwith Ġthe Ġissuer Ġ[ Party ]. ĊĠĠĠĠ Ġ* Ġ- ĠThe Ġ[ Token Pointer ] Ġis Ġa Ġ[ TokenType ] Ġimplementation Ġthat Ġwraps Ġa Ġ[ Linear Pointer ] Ġwith Ġa ĊĠĠĠĠ Ġ* Ġdisplay Token Size Ġwhich Ġwill Ġbe Ġthe Ġ[ fraction Digits ] Ġfrom Ġour Ġ[ Example E vol vable Token ]. ĊĠĠĠĠ Ġ* Ġ- ĠThe Ġ[ Linear Pointer ] Ġtakes Ġas Ġparameter Ġthe Ġlinear ĠId Ġof Ġour Ġ[ Example E vol vable Token ] ĊĠĠĠĠ Ġ* Ġand Ġthe Ġclass Ġdefinition Ġfor Ġthe Ġtoken Ġtype . ĊĠĠĠĠ Ġ* Ġ-- ĠHint : ĠYou Ġcan Ġuse Ġthe Ġ[ Example E vol vable Token :: class . java ] Ġnotation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create Non F ung ible E vol vable Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġissuer Ġ= Ġb . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġa . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate Non F ung ible E vol vable Token ( issuer , Ġholder ) ĊĠĠĠĠĠĠĠ Ġassert ( Non F ung ible Token :: class . java . isAssignableFrom ( result !! :: class . java )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Example E vol vable Token :: class . java , Ġresult . token Type . token Class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ create F ung ible Fixed Token ] Ġmethod . ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠNow Ġwe Ġwant Ġto Ġcreate Ġa Ġ[ F ung ible Token ] Ġcontaining Ġan Ġ[ Example Fixed Token ] ĊĠĠĠĠ Ġ* Ġ- ĠWhen Ġcreating Ġa Ġ[ F ung ible Token ] Ġwe Ġneed Ġto Ġsupply Ġan Ġ[ Amount ] Ġof Ġthe Ġ[ Iss ued TokenType ] ĊĠĠĠĠ Ġ* Ġas Ġwell Ġas Ġthe Ġ[ Party ] Ġwhich Ġis Ġthe Ġowner Ġof Ġthese Ġtokens . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create F ung ible Fixed Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġissuer Ġ= Ġb . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġa . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate F ung ible Fixed Token ( issuer , Ġholder , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġassert ( F ung ible Token :: class . java . isAssignableFrom ( result !! :: class . java )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Example Fixed Token :: class . java , Ġresult . token Type . token Class ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 0 , Ġresult . amount . quantity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ create F ung ible E vol vable Token ] Ġmethod . ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠNow Ġwe Ġwant Ġto Ġcreate Ġa Ġ[ F ung ible Token ] Ġcontaining Ġan Ġ[ Example E vol vable Token ] ĊĠĠĠĠ Ġ* Ġ- ĠUse Ġthe Ġ[ create F ung ible Fixed Token ] Ġand Ġ[ create Non F ung ible E vol vable Token ] Ġmethods Ġas Ġa Ġguide Ġhere . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġtest Create F ung ible E vol vable Token () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġissuer Ġ= Ġb . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġholder Ġ= Ġa . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġcreate F ung ible E vol vable Token ( issuer , Ġholder , Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠ Ġassert ( F ung ible Token :: class . java . isAssignableFrom ( result !! :: class . java )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Example E vol vable Token :: class . java , Ġresult . token Type . token Class ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 0 0 0 , Ġresult . amount . quantity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠConvert ĠIO U State Ġto Ġbe Ġin Ġterms Ġof Ġan ĠAmount Ġof ĠToken ĠSDK ĠTokens Ġrather Ġthan ĠCurrency ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ Ġ- ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġhas IO U Amount Field Of Correct Type () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDoes Ġthe Ġamount Ġfield Ġexist ? ĊĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠIO U State :: class . java . getDeclared Field (" amount ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠIs Ġthe Ġamount Ġfield Ġof Ġthe Ġcorrect Ġtype ? ĊĠĠĠĠĠĠĠ ĠassertEquals ( field . type , ĠAmount :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDoes Ġthe Ġamount Ġfield Ġhave Ġthe Ġcorrect Ġparam er ized Ġtype ? ĊĠĠĠĠĠĠĠ Ġval Ġsignature Ġ= Ġ( field . generic Type Ġas ĠParameter ized Type Impl ). actual Type Arguments [ 0 ] ĊĠĠĠĠĠĠĠ ĠassertEquals ( signature , ĠTokenType :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ IO U Token Issue Flow ]. ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠNow Ġwe Ġknow Ġhow Ġto Ġcreate Ġand Ġinstantiate ĠFixed / E vol vable ĠF ung ible / Non - fung ible ĠTokens , ĊĠĠĠĠ Ġ* Ġthe Ġnext Ġstep Ġis Ġto Ġactually ĠISS UE Ġthem Ġon Ġthe Ġledger Ġas Ġimmutable Ġfacts . ĊĠĠĠĠ Ġ* Ġ- ĠTo Ġdo Ġthis Ġwe Ġwill Ġimplement Ġthe Ġ[ IO U Token Issue Flow ] Ġwhich Ġwill Ġbe Ġa Ġsimple Ġflow ĊĠĠĠĠ Ġ* Ġthat Ġwill Ġcreate Ġand Ġissue Ġspecified Ġamount Ġof ĠF ung ible Tokens Ġusing Ġour Ġfixed ĠIO U Token . ĊĠĠĠĠ Ġ* Ġ- ĠOnce Ġwe Ġhave Ġcreated Ġthe Ġ[ F ung ible Token ] Ġobject , Ġwe Ġsub Flow Ġthe Ġ[ Issue Tokens ] ĠFlow Ġfrom ĊĠĠĠĠ Ġ* Ġthe ĠToken ĠSDK . ĊĠĠĠĠ Ġ* Ġ- ĠThe Ġ[ Issue Tokens ] ĠFlow Ġsimply Ġtakes Ġas Ġargument Ġa Ġlist Ġcontaining Ġthe Ġ[ F ung ible Token ] s Ġto ĊĠĠĠĠ Ġ* Ġissue . ĠIn Ġour Ġcase Ġthis Ġwill Ġbe Ġa Ġlist Ġcontaining Ġour Ġsingle Ġ[ F ung ible Token ] Ġinstance . ĊĠĠĠĠ Ġ* Ġ-- ĠYou Ġcan Ġuse Ġthe Ġ[ listOf ] ĠKotlin Ġcommand Ġto Ġeasily Ġmake Ġa Ġlist . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġimplement IO U Token Issue Flow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfuture Ġ= Ġb . start Flow ( IO U Token Issue Flow ( 2 5 )) ĊĠĠĠĠĠĠĠ Ġnetwork . run Network () ĊĠĠĠĠĠĠĠ Ġval Ġst x Ġ= Ġfuture . get OrThrow () ĊĊĠĠĠĠĠĠĠ ĠassertEquals ( st x . tx . output States . size , Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertEquals (( st x . tx . output States . get ( 0 ) Ġas ĠF ung ible Token ). amount . quantity , Ġ 2 5 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTODO : ĠImplement Ġ[ Delivery Vers us Payment Token Flow ]. ĊĠĠĠĠ Ġ* ĠHint : ĊĠĠĠĠ Ġ* Ġ- ĠThis Ġflow Ġwill Ġimplement Ġa Ġsimple Ġdelivery Ġvers us Ġpayment Ġuse Ġcase Ġto Ġexchange Ġtwo Ġdifferent ĊĠĠĠĠ Ġ* Ġtoken Ġtypes Ġbetween Ġtwo Ġparties Ġin Ġan Ġatomic Ġtransaction . ĊĠĠĠĠ Ġ* Ġ- ĠFirst , Ġwe 'll Ġneed Ġto Ġcreate Ġa Ġ[ Transaction Builder ] Ġwith Ġa Ġ[ Not ary ] Ġidentity . ĊĠĠĠĠ Ġ* Ġ- ĠThen , Ġwe Ġneed Ġto Ġcreate Ġa Ġ[ F ung ible Token ] Ġof Ġsome Ġamount Ġof Ġthe Ġ[ Example Fixed Token ] ĊĠĠĠĠ Ġ* Ġin Ġthe Ġ[ our Payment ] Ġparameter . ĊĠĠĠĠ Ġ* Ġ- ĠThen , Ġwe Ġneed Ġto Ġadd Ġa ĠMove Ġcommand Ġto Ġour ĠTransaction Builder Ġfor Ġboth Ġthe Ġpayment Ġand ĊĠĠĠĠ Ġ* Ġcounter Ġparty Ġasset . ĊĠĠĠĠ Ġ* Ġ-- ĠHere , Ġthe Ġ[ add Move F ung ible Tokens ] Ġand Ġ[ add Move Non F ung ible Tokens ] Ġhelper Ġmethods Ġfrom ĊĠĠĠĠ Ġ* Ġthe ĠToken ĠSDK Ġwill Ġcome Ġin Ġhandy . ĊĠĠĠĠ Ġ* Ġ-- ĠControl + Click Ġthe Ġabove Ġhelper Ġmethods Ġto Ġsee Ġthe Ġusage . ĊĠĠĠĠ Ġ* Ġ- ĠFinally , Ġto Ġget Ġour Ġunit Ġtest Ġpassing , Ġuse Ġthe Ġ[ service Hub ] Ġto Ġsign Ġthe Ġinitial Ġtransaction ĊĠĠĠĠ Ġ* Ġand Ġreturn Ġthe Ġpartially Ġsigned Ġtransaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġimplement Delivery Vers us Payment Flow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġparty A Ġ= Ġa . info . legal Id entities . get ( 0 ); ĊĠĠĠĠĠĠĠ Ġval Ġparty B Ġ= Ġb . info . legal Id entities . get ( 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġf ung ible Token Ġ= Ġcreate F ung ible Fixed Token ( party A , Ġparty A , Ġ 1 0 0 0 ) !! ĊĠĠĠĠĠĠĠ Ġval Ġnon F ung ible Token Ġ= Ġcreate Non F ung ible Fixed Token ( party B , Ġparty B ) !! ĊĊĠĠĠĠĠĠĠ Ġval Ġf ung ible Future Ġ= Ġa . start Flow ( Issue Tokens Flow ( fung ible Token )) ĊĠĠĠĠĠĠĠ Ġnetwork . run Network () ĊĠĠĠĠĠĠĠ Ġval Ġst x Ġ= Ġf ung ible Future . get OrThrow () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġst x . tx . output States . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnon F ung ible Future Ġ= Ġb . start Flow ( Issue Tokens ( listOf ( non F ung ible Token ), ĠlistOf ( party A ))) ĊĠĠĠĠĠĠĠ Ġnetwork . run Network () ĊĠĠĠĠĠĠĠ Ġval Ġst x 2 Ġ= Ġnon F ung ible Future . get OrThrow () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġst x 2 . tx . output States . size ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstates Ġ= Ġa . services . vault Service . query By ( Contract State :: class . java ). states ĊĊĠĠĠĠĠĠĠ Ġval Ġd vp Future Ġ= Ġa . start Flow ( Delivery Vers us Payment Token Flow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample Fixed Token (" CUSTOM TOKEN ", Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠExample Fixed Token (" CUSTOM TOKEN ", Ġ 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparty B ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠ Ġnetwork . run Network () ĊĠĠĠĠĠĠĠ Ġval Ġst x 3 Ġ= Ġd vp Future . get OrThrow () ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġst x 3 . tx . output States . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġst x 3 . tx . to Ledger Transaction ( a . services ). outputs OfType ( F ung ible Token :: class . java ). size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġst x 3 . tx . to Ledger Transaction ( a . services ). outputs OfType ( Non F ung ible Token :: class . java ). size ) ĊĠĠĠĠĠĠĠ Ġvar Ġf Ġ= Ġst x 3 . tx . to Ledger Transaction ( a . services ). outputs OfType ( F ung ible Token :: class . java ). get ( 0 ) ĊĠĠĠĠĠĠĠ Ġvar Ġnf Ġ= Ġst x 3 . tx . to Ledger Transaction ( a . services ). outputs OfType ( Non F ung ible Token :: class . java ). get ( 0 ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( party B , Ġf . holder ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( party A , Ġnf . holder ) ĊĠĠĠ Ġ} Ċ }