Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import smartpy as sp
- class EventPlanner(sp.Contract):
- def __init__(self, initialOwner):
- self.init(owner = sp.set_type(initialOwner, sp.TAddress),
- nameToEvent = sp.map(tkey = sp.TString, tvalue=sp.TPair(t1=sp.TString, t2=sp.TInt)))
- @sp.entry_point
- def setDate(self, params):
- sp.verify(sp.sender == self.data.owner)
- self.checkEvent(params.name)
- self.data.nameToEvent[params.name] = sp.pair(params.newDate, sp.snd(self.data.nameToEvent[params.name]))
- @sp.entry_point
- def setNumGuests(self, params):
- #check whether the sender is the owner
- sp.verify(sp.sender == self.data.owner)
- self.checkEvent(params.name)
- #change number of guests
- self.data.nameToEvent[params.name] = sp.pair(sp.fst(self.data.nameToEvent[params.name]), params.newNumGuests)
- @sp.entry_point
- def changeOwner(self, params):
- #check whether the sender is the owner
- sp.verify(sp.sender == self.data.owner)
- #set owner to the new owner
- self.data.owner = params.newOwner
- #This function check whether the name already exists in the map, if it doesn't exist checkEvent will create it.
- def checkEvent(self, name):
- sp.if ~self.data.nameToEvent.contains(name):
- self.data.nameToEvent[name] = sp.pair("", 0)
- @sp.add_test(name = "SomeTest")
- def test():
- scenario = sp.test_scenario()
- scenario.h1("Event Planner")
- firstOwner = sp.address("tz1-firstOwner-address-1234")
- secondOwner = sp.address("tz1-secondOwner-address-5678")
- c1 = EventPlanner(firstOwner)
- scenario += c1
- # Invoke EventPlanner entry points and print results to HTML
- scenario.h2("Set date for Tezos Meetup to 11-28-2017")
- scenario += c1.setDate(name = "Tezos Meetup", newDate = "11-28-2017").run(sender = firstOwner)
- scenario.h2("Set number of guests for Tezos Meetup to 80")
- scenario += c1.setNumGuests(name = "Tezos Meetup", newNumGuests = 80).run(sender = firstOwner)
- scenario.h2("Change owner")
- scenario += c1.changeOwner(newOwner = secondOwner).run(sender = firstOwner)
- scenario.h2("New owner sets date for Tezos Meetup to 03-21-2019")
- scenario += c1.setDate(name = "Tezos Meetup", newDate = "03-21-2019").run(sender = secondOwner)
- scenario.h2("Old owner attempts to set date for Tezos Meetup")
- scenario += c1.setDate(name = "Tezos Meetup", newDate = "10-15-2018").run(sender = firstOwner, valid = False)
- # Verify expected results
- scenario.verify(sp.fst(c1.data.nameToEvent["Tezos Meetup"]) == '03-21-2019')
- scenario.verify(sp.snd(c1.data.nameToEvent["Tezos Meetup"]) == 80)
- scenario.verify((c1.data.owner) == sp.address('tz1-secondOwner-address-5678'))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement