def run_simulation(): s = tester.state() s.block.gas_limit = SIM_GAS * 2 tester.gas_limit = SIM_GAS simulation = s.contract('simulation.se') logger.register_address('sim', simulation) a_ai = s.contract('ai_simple.se') logger.register_address('a_ai', a_ai) b_ai = s.contract('ai_two.se') #b_ai = s.contract('ai_simple.se') logger.register_address('b_ai', b_ai) try: winner = s.send(tester.k0, simulation, 0, data=[a_ai, b_ai]) except Exception as e: print 'last messages' logger.print_log_history(8) raise e if not winner: print 'simulation failed, last logs:' print logger.print_log_history(2) elif a_ai in hex(winner[0]): print "A WINS " * 5 else: assert b_ai in hex(winner[0]) print "B WINS " * 5
def test_quicksort(): s = tester.state() c = s.contract("quicksort_pairs.se") data = [30, 1, 90, 2, 70, 3, 50, 4] expected = [30, 1, 50, 4, 70, 3, 90, 2] r = s.send(tester.k0, c, 0, data=data) assert expected == r, (r, expected)
def test_quicksort(): s = tester.state() c = s.contract('quicksort_pairs.se') data = [30, 1, 90, 2, 70, 3, 50, 4] expected = [30, 1, 50, 4, 70, 3, 90, 2] r = s.send(tester.k0, c, 0, data=data) assert expected == r, (r, expected)
def test_debug(): s = tester.state() debug = s.contract('debug.se') print "debug address: %s" % debug print 'debug returned', s.send(tester.k0, debug, 0, data=["hallo", 1, 2, 3])
def test_get_neighbours(): s = tester.state() c = s.contract("get_neighbours.se") r = s.send(tester.k0, c, 0, data=[4, 3, 3]) expected = [4, 1, 7, 3, 5] # num, n0, n1, ... assert r == expected, (r, expected) r = s.send(tester.k0, c, 0, data=[8, 3, 3]) expected = [2, 5, 7, 0, 0] assert r == expected, (r, expected)
def test_get_neighbours(): s = tester.state() c = s.contract('get_neighbours.se') r = s.send(tester.k0, c, 0, data=[4, 3, 3]) expected = [4, 1, 7, 3, 5] # num, n0, n1, ... assert r == expected, (r, expected) r = s.send(tester.k0, c, 0, data=[8, 3, 3]) expected = [2, 5, 7, 0, 0] assert r == expected, (r, expected)
def test_organizer(): s = tester.state() simulation = s.contract("simulaton.se") print "simulator: %s" % simulation organizer = s.contract("organizer.se") ai_address = organizer print "organizer: %s" % organizer stake = 10 ** 6 simulation_gas = 10 ** 5 # send bets send(sender, to, value, data=[]) print "tx1:", s.send(tester.k0, organizer, stake, data=[ai_address, simulation_gas]) print "tx2:", s.send(tester.k1, organizer, stake, data=[ai_address, simulation_gas + 2000])
def test_simluation_setup(): s = tester.state() simulation = s.contract("simulation.se") logger.register_address("sim", simulation) a_ai = s.contract("ai_simple.se") logger.register_address("a_ai", a_ai) b_ai = s.contract("ai_two.se") logger.register_address("b_ai", b_ai) try: print s.send(tester.k0, simulation, 0, data=[a_ai, b_ai]) except Exception, e: print "\n".join(repr(x) for x in logger.get_history(1)) raise e
def test_simluation_setup(): s = tester.state() simulation = s.contract('simulation.se') logger.register_address('sim', simulation) a_ai = s.contract('ai_simple.se') logger.register_address('a_ai', a_ai) b_ai = s.contract('ai_two.se') logger.register_address('b_ai', b_ai) try: print s.send(tester.k0, simulation, 0, data=[a_ai, b_ai]) except Exception, e: print '\n'.join(repr(x) for x in logger.get_history(1)) raise e
def test_ai_simple(): s = tester.state() print "setting up ai_simple" a_ai = s.contract("ai_simple.se") print "SETUP GAS", s.block.gas_used print "GAS LIMIT", s.block.gas_limit b_ai = 2 cols, rows = 4, 4 a_grid = [0] * cols * rows b_grid = [0] * cols * rows a_grid[2], b_grid[-2 - 1] = 1000, 1000 msgdata = [cols, rows, a_ai.decode("hex"), b_ai] + a_grid + b_grid + redistribution_grid(319283098, cols * rows) print msgdata r = s.send(tester.k0, a_ai, 0, data=msgdata) print r
def test_ai_simple(): s = tester.state() print "setting up ai_simple" a_ai = s.contract('ai_simple.se') print "SETUP GAS", s.block.gas_used print "GAS LIMIT", s.block.gas_limit b_ai = 2 cols, rows = 4, 4 a_grid = [0] * cols * rows b_grid = [0] * cols * rows a_grid[2], b_grid[-2 - 1] = 1000, 1000 msgdata = [cols, rows, a_ai.decode('hex'), b_ai ] + a_grid + b_grid + redistribution_grid( 319283098, cols * rows) print msgdata r = s.send(tester.k0, a_ai, 0, data=msgdata) print r
def test_organizer(): s = tester.state() simulation = s.contract('simulaton.se') print "simulator: %s" % simulation organizer = s.contract('organizer.se') ai_address = organizer print "organizer: %s" % organizer stake = 10**6 simulation_gas = 10**5 # send bets send(sender, to, value, data=[]) print 'tx1:', s.send(tester.k0, organizer, stake, data=[ai_address, simulation_gas]) print 'tx2:', s.send(tester.k1, organizer, stake, data=[ai_address, simulation_gas + 2000])
and returns an outsize-sized data array as the output """ code_msg = """ address = msg.data[0] insize = 68 outsize = 3 datarray = array(insize) gas = 1000 value = 0 move = msg(gas, address, value, datarray, insize, outsize) return(move, 3) """ print 'setting up contracts', s = tester.state() logger.register_address('EOA', tester.a0) c1 = s.contract(code_sub, sender=tester.k0) logger.register_address('code_sub', c1) c2 = s.contract(code_call, sender=tester.k0) logger.register_address('code_call', c2) c3 = s.contract(code_msg, sender=tester.k0) logger.register_address('code_msg', c3) move = [1, 2, 3] # fails on osx and linux print
def test_debug(): s = tester.state() debug = s.contract("debug.se") print "debug address: %s" % debug print "debug returned", s.send(tester.k0, debug, 0, data=["hallo", 1, 2, 3])
def test_is_neighbour(): s = tester.state() c = s.contract("is_neighbour.se") for expected, a, b in [(0, 1, 1), (1, 0, 1), (1, 4, 7), (0, 4, 8)]: assert [expected] == s.send(tester.k0, c, 0, data=[a, b, 3, 3]) assert 1 == s.send(tester.k0, c, 0, data=[4, 0, 4, 4])
# not really py.test but used for testing while development from testenv import tester from testenv import run, logger s = tester.state() c = s.contract('quicksort_pairs_debug.se') logger.register_address('qsort', c) def test_quicksort(data, expected): print 'testing', data, expected r = s.send(tester.k0, c, 0, data=data) assert expected == r, (r, expected) test_quicksort([30, 1],[30, 1]) test_quicksort([30, 1, 20, 2],[20, 2, 30, 1]) test_quicksort([30, 0, 20, 2],[20, 2, 30, 0]) test_quicksort([30, 1, 90, 2, 70, 3, 50, 4],[ 30, 1, 50, 4, 70, 3, 90, 2 ])
def test_is_neighbour(): s = tester.state() c = s.contract('is_neighbour.se') for expected, a, b in [(0, 1, 1), (1, 0, 1), (1, 4, 7), (0, 4, 8)]: assert [expected] == s.send(tester.k0, c, 0, data=[a, b, 3, 3]) assert 1 == s.send(tester.k0, c, 0, data=[4, 0, 4, 4])