Proto/Alpha: some unit tests for 'origination'

This commit is contained in:
Guillem Rieu 2017-04-05 22:42:40 +02:00 committed by Benjamin Canou
parent bb95acfb48
commit 08fc0b5f76
6 changed files with 133 additions and 0 deletions

View File

@ -52,6 +52,7 @@ test/shell/test-store
test/shell/test-state
test/shell/test-context
test/proto_alpha/test-transaction
test/proto_alpha/test-origination
**/*~
**/\#*\#

1
.gitignore vendored
View File

@ -52,6 +52,7 @@
/test/shell/test-state
/test/shell/test-context
/test/proto_alpha/test-transaction
/test/proto_alpha/test-origination
*~
\#*\#

View File

@ -114,6 +114,15 @@ test:proto_alpha:transactions:
dependencies:
- build
test:proto_alpha:origination:
stage: test
tags:
- tezos_builder
script:
- make -C test/proto_alpha run-test-origination
dependencies:
- build
test:basic.sh:
stage: test
tags:

View File

@ -48,3 +48,23 @@ test-transaction: ${LIB} ${TEST_CONNECTION_IMPLS:.ml=.cmx}
clean::
rm -f test-transaction
############################################################################
## Origination
.PHONY:run-test-origination
run-test-origination:
@echo
./test-origination
TEST_CONNECTION_IMPLS := \
proto_alpha_helpers.mli \
proto_alpha_helpers.ml \
test_origination.ml
test-origination: ${LIB} ${TEST_CONNECTION_IMPLS:.ml=.cmx}
@echo COMPILE $(notdir $@)
@${OCAMLOPT} -linkall -linkpkg ${OCAMLFLAGS} -o $@ $^
clean::
rm -f test-origination

View File

@ -0,0 +1,94 @@
(**************************************************************************)
(* *)
(* Copyright (c) 2014 - 2016. *)
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* *)
(* All rights reserved. No warranty, explicit or implicit, provided. *)
(* *)
(**************************************************************************)
open Client_embedded_proto_alpha
open Tezos_context
module Helpers = Proto_alpha_helpers
module Assert = Helpers.Assert
let run blkid ({ b1 ; b2 ; _ } : Helpers.Account.bootstrap_accounts) =
Helpers.Mining.mine b1 blkid >>=? fun blkh ->
let foo = Helpers.Account.create "foo" in
(* Origination with amount = 0 tez *)
Helpers.Account.originate
~src:foo
~manager_pkh:foo.pkh
~spendable:true
~balance:0L () >>= fun result ->
Assert.unknown_contract ~msg:__LOC__ result ;
(* Origination with amount = .5 tez *)
Helpers.Account.originate
~src:b1
~manager_pkh:foo.pkh
~spendable:true
~balance:50L () >>= fun result ->
Assert.initial_amount_too_low ~msg:__LOC__ result ;
(* Origination with amount = 1 tez *)
Helpers.Account.originate
~src:b1
~manager_pkh:foo.pkh
~spendable:true
~balance:100L () >>= fun result ->
Assert.initial_amount_too_low ~msg:__LOC__ result ;
(* Origination with amount > 1 tez *)
Helpers.Account.originate
~src:b1
~manager_pkh:foo.pkh
~spendable:true
~balance:101L () >>= fun _result ->
(* TODO: test if new contract exists *)
(* Non-delegatable contract *)
Helpers.Account.originate
~src:b1
~manager_pkh:b1.pkh
~spendable:true
~balance:500L () >>=? fun (_oph, nd_contract) ->
(* Delegatable contract *)
Helpers.Account.originate
~src:b1
~manager_pkh:b1.pkh
~spendable:true
~delegate:b1.pkh
~balance:500L () >>=? fun (_oph, d_contract) ->
(* Change delegate of a non-delegatable contract *)
Helpers.Account.set_delegate
~contract:nd_contract
~manager_sk:b1.sk
(Some b2.pkh) >>= fun result ->
Assert.non_delegatable ~msg:__LOC__ result ;
(* Change delegate of a delegatable contract *)
Helpers.Account.set_delegate
~contract:d_contract
~manager_sk:b1.sk
(Some b2.pkh) >>= fun _result ->
Assert.delegate_equal ~msg:__LOC__ d_contract (Some b2.pkh) >>=? fun () ->
return blkh
let main () =
Helpers.init () >>=? fun (_node_pid, hash) ->
run (`Hash hash) Helpers.Account.bootstrap_accounts >>=? fun _blkh ->
return ()
let tests = [
"main", (fun _ -> main ()) ;
]
let () =
Test.run "origination." tests

View File

@ -0,0 +1,8 @@
(**************************************************************************)
(* *)
(* Copyright (c) 2014 - 2016. *)
(* Dynamic Ledger Solutions, Inc. <contact@tezos.com> *)
(* *)
(* All rights reserved. No warranty, explicit or implicit, provided. *)
(* *)
(**************************************************************************)