@@ -5,10 +5,11 @@ import {
55 toUtf8Bytes ,
66 solidityPack
77} from "ethers/lib/utils" ;
8- import { expect , use } from "chai" ;
8+ import { expect , use } from "chai" ;
99import { deployContract , MockProvider , solidity } from "ethereum-waffle" ;
10- import BasicToken from "../artifacts/contracts/FlashToken.sol/FlashToken.json" ;
11- import { constants } from "ethers" ;
10+ import FlashTokenArtifact from "../artifacts/contracts/FlashToken.sol/FlashToken.json" ;
11+ import MinterContractArtifact from "../artifacts/contracts/tests/FlashMinter.sol/FlashMinter.json" ;
12+ import { constants , ethers } from "ethers" ;
1213import { ecsign } from "ethereumjs-util" ;
1314import { mintTokens } from './utils/functions'
1415
@@ -27,33 +28,33 @@ describe("Flash token", async () => {
2728 "0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6" ;
2829
2930 beforeEach ( async ( ) => {
30- FlashToken = await deployContract ( wallet , BasicToken , [ wallet . address , wallet . address ] ) ;
31+ FlashToken = await deployContract ( wallet , FlashTokenArtifact , [ wallet . address , wallet . address ] ) ;
3132 } ) ;
32-
33+
3334
3435 it ( "name" , async ( ) => {
3536 const name = await FlashToken . name ( ) ;
3637 expect ( name ) . to . be . equal ( "Flash Token" ) ;
3738 } ) ;
38-
39-
39+
40+
4041 it ( "symbol" , async ( ) => {
4142 expect ( await FlashToken . symbol ( ) ) . to . be . equal ( "FLASH" ) ;
4243 } ) ;
4344
44-
45+
4546 it ( "decimals" , async ( ) => {
4647 expect ( await FlashToken . decimals ( ) ) . to . be . equal ( 18 ) ;
4748 } ) ;
4849
49-
50+
5051 it ( "name hash" , async ( ) => {
5152 expect ( keccak256 ( toUtf8Bytes ( "FLASH" ) ) ) . to . be . equal (
5253 "0x345b72c36b14f1cee01efb8ac4b299dc7b8d873e28b4796034548a3d371a4d2f"
5354 ) ;
5455 } ) ;
5556
56-
57+
5758 it ( "version hash" , async ( ) => {
5859 expect ( keccak256 ( toUtf8Bytes ( "1" ) ) ) . to . be . equal (
5960 "0xc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6"
@@ -91,7 +92,7 @@ describe("Flash token", async () => {
9192
9293 it ( "transfer" , async ( ) => {
9394
94- let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
95+ let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
9596
9697 await expect ( FlashToken . transfer ( walletTo . address , AMOUNT ) )
9798 . to . emit ( FlashToken , "Transfer" )
@@ -104,11 +105,11 @@ describe("Flash token", async () => {
104105
105106 it ( "transfer fail -> this token address" , async ( ) => {
106107
107- let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
108+ let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
108109
109110 await expect ( FlashToken . transfer ( FlashToken . address , AMOUNT ) )
110111 . to . be . revertedWith ( "FlashToken:: RECEIVER_IS_TOKEN_OR_ZERO" ) ;
111-
112+
112113 } ) ;
113114
114115
@@ -120,39 +121,39 @@ describe("Flash token", async () => {
120121
121122 it ( "transfer fail -> zero address" , async ( ) => {
122123
123- let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
124-
124+ let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
125+
125126 await expect ( FlashToken . transfer ( constants . AddressZero , AMOUNT ) )
126- . to . be . revertedWith ( "FlashToken:: RECEIVER_IS_TOKEN_OR_ZERO" ) ;
127-
127+ . to . be . revertedWith ( "FlashToken:: RECEIVER_IS_TOKEN_OR_ZERO" ) ;
128+
128129 } ) ;
129130
130131
131132 it ( "transferFrom" , async ( ) => {
132133
133- let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
134-
134+ let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
135+
135136 await FlashToken . approve ( walletTo . address , AMOUNT ) ;
136137 const Another = FlashToken . connect ( walletTo ) ;
137-
138+
138139 await expect ( Another . transferFrom ( wallet . address , walletTo . address , AMOUNT ) )
139140 . to . emit ( FlashToken , "Transfer" )
140141 . withArgs ( wallet . address , walletTo . address , AMOUNT ) ;
141-
142- expect (
142+
143+ expect (
143144 await FlashToken . allowance ( wallet . address , walletTo . address )
144145 ) . to . equal ( 0 ) ;
145-
146+
146147 expect ( await FlashToken . balanceOf ( wallet . address ) ) . to . equal ( 0 ) ;
147-
148+
148149 expect ( await FlashToken . balanceOf ( walletTo . address ) ) . to . equal ( AMOUNT ) ;
149150 } ) ;
150151
151152
152153 it ( "permit" , async ( ) => {
153154
154- let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
155-
155+ let AMOUNT = await mintTokens ( FlashToken , wallet . address ) ;
156+
156157 const deadline : any = constants . MaxUint256 ;
157158 const nonces = await FlashToken . nonces ( wallet . address ) ;
158159
@@ -193,12 +194,21 @@ describe("Flash token", async () => {
193194 hexlify ( s )
194195 )
195196 ) . to . emit ( FlashToken , "Approval" ) ;
196-
197- expect (
198- await FlashToken . allowance ( wallet . address , walletTo . address )
199- ) . to . equal ( AMOUNT ) ;
200-
201- expect ( await FlashToken . nonces ( wallet . address ) ) . to . equal ( 1 ) ;
202-
197+
203198 } ) ;
199+
200+ it ( "flashmint" , async ( ) => {
201+ let MinterContract : any = await deployContract ( wallet , MinterContractArtifact , [ FlashToken . address ] ) ;
202+ let encode = ethers . utils . defaultAbiCoder . encode ( [ 'bool' , 'uint256' , 'address' ] , [ false , '1000000000000000000' , wallet . address ] ) ;
203+ await expect ( MinterContract . flashMint ( "1000000000000000000" , encode )
204+ ) . to . emit ( FlashToken , "Transfer" ) ;
205+ expect ( await FlashToken . flashSupply ( ) ) . to . equal ( 0 ) ;
206+ } )
207+
208+ it ( "flashmint fail" , async ( ) => {
209+ let MinterContract : any = await deployContract ( wallet , MinterContractArtifact , [ FlashToken . address ] ) ;
210+ let encode = ethers . utils . defaultAbiCoder . encode ( [ 'bool' , 'uint256' , 'address' ] , [ true , '1000000000000000000' , wallet . address ] ) ;
211+ await expect ( MinterContract . flashMint ( "1000000000000000000" , encode ) )
212+ . to . be . revertedWith ( "FlashToken:: TRANSFER_EXCEED_BALANCE" ) ;
213+ } )
204214} ) ;
0 commit comments