sophia/test/contracts/reason/voting_test.re
Radosław Rowicki b669d2df1e Added list comprehensions and standard List, Option, Func, Pair, and Triple library (#105)
* Added standard List library and list comprehensions

Added List library.

Flatmaps WIP

Fixed dependency in flat_map

fcode generation

Updated tests to use custom list lib

Added comprehension test

Added stdlib

sanity

Test

* Extended stdlib for lists. Added error message for redefinition of stdlibx

* Fixed type template

* Improved stdlib

* More functions

* Fixed cyclic includes

* Refixed imports and added few tests

* Added fail test

* Undelete removed type spec

* Remove typo

* Fix iter function

* Fixed typo

* Added if guards and let statements in list comp

* Added more fail tests

* Option stliv

* 2 and 3 tuple stdlib

* Updated stdlib to new syntax. Added recursor and changed all/any functions

* Fixed performance issues. Changed include management

* Fixed hash type
2019-08-14 13:53:58 +02:00

43 lines
1.1 KiB
ReasonML

open Rte;
open Voting;
let creator = "0x123";
let voter1 = "0x1001";
let voter2 = "0x1002";
let voter3 = "0x1003";
let other = "0xffff";
module SetupVote = Setup(Voting);
open Voting;
let print_tally() = {
let tally = call(other, () => currentTally());
MyList.map(((name, count)) => Printf.printf("%s: %d\n", name, count), tally);
let winner = call(other, () => winnerName());
Printf.printf("Winner: %s\n", winner);
};
Printf.printf("Delegate before vote\n");
SetupVote.init(creator, ["Cake", "Beer"]);
call(creator, () => giveRightToVote(voter1));
call(creator, () => giveRightToVote(voter2));
call(creator, () => giveRightToVote(voter3));
call(voter3, () => delegate(voter1));
call(voter1, () => vote(1));
call(voter2, () => vote(0));
print_tally();
SetupVote.reset();
Printf.printf("Delegate after vote\n");
SetupVote.init(creator, ["Cake", "Beer"]);
call(creator, () => giveRightToVote(voter1));
call(creator, () => giveRightToVote(voter2));
call(creator, () => giveRightToVote(voter3));
call(voter1, () => vote(1));
call(voter3, () => delegate(voter1));
call(voter2, () => vote(0));
print_tally();