@@ -267,16 +267,17 @@ class ExecuteTokenContractDiffTest extends PropSpec
267
267
}
268
268
}
269
269
270
- val preconditionsAndExecuteContractSystemSend : Gen [(GenesisTransaction , ExecuteContractFunctionTransaction , Long , Address )] = for {
270
+ val preconditionsAndExecuteContractSystemSend : Gen [(GenesisTransaction , ExecuteContractFunctionTransaction , ExecuteContractFunctionTransaction , Long , Address )] = for {
271
271
(master, ts, fee) <- ContractGenHelper .basicContractTestGen()
272
272
genesis <- genesisTokenGen(master, ts)
273
273
recipient <- mintingAddressGen
274
274
description <- genBoundedString(2 , ExecuteContractFunctionTransaction .MaxDescriptionSize )
275
275
executeContractSystemSend <- sendVSYSGen(master, recipient, 100000L , description, fee, ts)
276
- } yield (genesis, executeContractSystemSend, fee, recipient)
276
+ executeContractSystemSend2 <- sendVSYSGen(master, recipient, ENOUGH_AMT , description, fee, ts)
277
+ } yield (genesis, executeContractSystemSend, executeContractSystemSend2, fee, recipient)
277
278
278
279
property(" execute contract transaction systemSend successfully" ) {
279
- forAll(preconditionsAndExecuteContractSystemSend) { case (genesis, executeContractSystemSend : ExecuteContractFunctionTransaction , fee : Long , recipient) =>
280
+ forAll(preconditionsAndExecuteContractSystemSend) { case (genesis, executeContractSystemSend : ExecuteContractFunctionTransaction , _, fee : Long , recipient) =>
280
281
assertDiffAndState(Seq (TestBlock .create(Seq (genesis))), TestBlock .create(Seq (executeContractSystemSend))) { (blockDiff, newState) =>
281
282
val totalPortfolioDiff : Portfolio = Monoid .combineAll(blockDiff.txsDiff.portfolios.values)
282
283
val sender = executeContractSystemSend.proofs.firstCurveProof.explicitGet().publicKey
@@ -292,4 +293,17 @@ class ExecuteTokenContractDiffTest extends PropSpec
292
293
}
293
294
}
294
295
296
+ property(" execute contract transaction systemSend failed dual to insufficient VSYS" ) {
297
+ forAll(preconditionsAndExecuteContractSystemSend) { case (genesis, _, executeContractSystemSend2 : ExecuteContractFunctionTransaction , fee : Long , recipient) =>
298
+ assertDiffEi(Seq (TestBlock .create(Seq (genesis))), TestBlock .createWithTxStatus(Seq (executeContractSystemSend2), TransactionStatus .ContractVSYSBalanceInsufficient )) { blockDiffEi =>
299
+ blockDiffEi shouldBe an[Right [_, _]]
300
+ val totalPortfolioDiff : Portfolio = Monoid .combineAll(blockDiffEi.explicitGet().txsDiff.portfolios.values)
301
+ totalPortfolioDiff.balance shouldBe - fee
302
+ blockDiffEi.explicitGet().txsDiff.contractNumDB.isEmpty shouldBe true
303
+ blockDiffEi.explicitGet().txsDiff.contractDB.isEmpty shouldBe true
304
+ blockDiffEi.explicitGet().txsDiff.txStatus shouldBe TransactionStatus .ContractVSYSBalanceInsufficient
305
+ }
306
+ }
307
+ }
308
+
295
309
}
0 commit comments