From a2caec99391f8e8548e3378c25fa2b30554bbcd5 Mon Sep 17 00:00:00 2001 From: Galfour Date: Sun, 5 May 2019 22:50:37 +0000 Subject: [PATCH] coase contracts in new ligo --- src/ligo/contracts/coase.ligo | 24 ++++++++++++++++++++++-- src/ligo/test/coase_tests.ml | 2 ++ src/ligo/test/test_helpers.ml | 2 +- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/ligo/contracts/coase.ligo b/src/ligo/contracts/coase.ligo index 0a381adaf..8e79bcf21 100644 --- a/src/ligo/contracts/coase.ligo +++ b/src/ligo/contracts/coase.ligo @@ -10,7 +10,8 @@ type card_patterns is map(card_pattern_id , card_pattern) type card_id is nat type card is record [ - card_owner : address + card_owner : address ; + card_pattern : card_pattern_id ; ] type cards is map(card_id , card) @@ -33,9 +34,27 @@ type action_transfer is record [ type action is | Buy_single of action_buy_single -// | Sell of action_sell +// | Sell of action_sell_single // | Transfer of action_transfer +// function sell_single(const action : action_sell_single ; const s : storage_type) : (list(operation) * storage_type) is +// begin +// const card : card = get_force(action.card_to_sell , s.cards) ; +// if (card.card_owner =/= source) then fail "This card doesn't belong to you" else skip ; +// const card_pattern : card_pattern = get_force(card.card_pattern , s.card_patterns) ; +// card_pattern.quantity := abs(card_pattern.quantity - 1n); +// const card_patterns : card_patterns = s.card_patterns ; +// card_patterns[card.card_pattern] := card_pattern ; +// s.card_patterns := card_patterns ; +// const cards : cards = s.cards ; +// remove action.card_to_sell from map cards ; +// s.cards := cards ; +// const price : tez = card_pattern.coefficient * card_pattern.quantity ; +// const receiver : contract(unit) = get_contract(source) ; +// const op : operation = transaction(price , unit , receiver) ; +// const operations : list(operation) = list op end ; +// end with (operations , s) + function buy_single(const action : action_buy_single ; const s : storage_type) : (list(operation) * storage_type) is begin // Check funds @@ -53,6 +72,7 @@ function buy_single(const action : action_buy_single ; const s : storage_type) : const cards : cards = s.cards ; cards[s.next_id] := record card_owner = source ; + card_pattern = action.card_to_buy ; end ; s.cards := cards ; s.next_id := s.next_id + 1n ; diff --git a/src/ligo/test/coase_tests.ml b/src/ligo/test/coase_tests.ml index 36dc4db49..a2baeff99 100644 --- a/src/ligo/test/coase_tests.ml +++ b/src/ligo/test/coase_tests.ml @@ -19,10 +19,12 @@ open Ast_simplified let card owner = ez_e_a_record [ ("card_owner" , owner) ; + ("card_pattern" , e_a_nat 0) ; ] let card_ty = t_record_ez [ ("card_owner" , t_address) ; + ("card_pattern" , t_nat) ; ] let card_ez owner = card (e_a_address owner) diff --git a/src/ligo/test/test_helpers.ml b/src/ligo/test/test_helpers.ml index 1faec8238..146451d12 100644 --- a/src/ligo/test/test_helpers.ml +++ b/src/ligo/test/test_helpers.ml @@ -28,7 +28,7 @@ let expect ?(options = make_options ()) program entry_point input expected = let content () = Format.asprintf "Entry_point: %s" entry_point in error title content in trace run_error @@ - Ligo.easy_run_typed_simplified ~debug_michelson:true ?amount:options.amount entry_point program input in + Ligo.easy_run_typed_simplified ~debug_michelson:false ?amount:options.amount entry_point program input in let expect_error = let title () = "expect result" in let content () = Format.asprintf "Expected %a, got %a"