const MetaCoin = artifacts . require ( 'MetaCoin' ) ; contract ( 'MetaCoin' , ( accounts ) => { it ( 'should put 10000 MetaCoin in the first account' , async ( ) => { const metaCoinInstance = await MetaCoin . deployed ( ) ; const balance = await metaCoinInstance . getBalance ( accounts [ 0 ] ) ; assert . equal ( balance . toString ( ) , '10000' , "10000 wasn't in the first account" ) ; } ) ; it ( 'should call a function that depends on a linked library' , async ( ) => { const metaCoinInstance = await MetaCoin . deployed ( ) ; const metaCoinBalance = ( await metaCoinInstance . getBalance ( accounts [ 0 ] ) ) . toNumber ( ) ; const metaCoinEthBalance = ( await metaCoinInstance . getBalanceInEth ( accounts [ 0 ] ) ) . toNumber ( ) ; assert . equal ( metaCoinEthBalance , 2 * metaCoinBalance , 'Library function returned unexpected function, linkage may be broken' ) ; } ) ; it ( 'should send coin correctly' , async ( ) => { const metaCoinInstance = await MetaCoin . deployed ( ) ; const accountOne = accounts [ 0 ] ; const accountTwo = accounts [ 1 ] ; const accountOneStartingBalance = ( await metaCoinInstance . getBalance ( accountOne ) ) . toNumber ( ) ; const accountTwoStartingBalance = ( await metaCoinInstance . getBalance ( accountTwo ) ) . toNumber ( ) ; const amount = 10 ; await metaCoinInstance . sendCoin ( accountTwo , amount , { from : accountOne } ) ; const accountOneEndingBalance = ( await metaCoinInstance . getBalance ( accountOne ) ) . toNumber ( ) ; const accountTwoEndingBalance = ( await metaCoinInstance . getBalance ( accountTwo ) ) . toNumber ( ) ; assert . equal ( accountOneEndingBalance , accountOneStartingBalance - amount , "Amount wasn't correctly taken from the sender" ) ; assert . equal ( accountTwoEndingBalance , accountTwoStartingBalance + amount , "Amount wasn't correctly sent to the receiver" ) ; } ) ; } ) ;