|
|
@ -52,7 +52,7 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
'-addressindex=1', |
|
|
|
'-spentindex=1', |
|
|
|
'-ac_supply=5555555', |
|
|
|
'-ac_reward=10000000', |
|
|
|
'-ac_reward=10000000000000', |
|
|
|
'-pubkey=' + self.pubkey, |
|
|
|
'-ac_cc=2', |
|
|
|
'-whitelist=127.0.0.1', |
|
|
@ -69,7 +69,7 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
'-addressindex=1', |
|
|
|
'-spentindex=1', |
|
|
|
'-ac_supply=5555555', |
|
|
|
'-ac_reward=10000000', |
|
|
|
'-ac_reward=10000000000000', |
|
|
|
'-pubkey=' + self.pubkey1, |
|
|
|
'-ac_cc=2', |
|
|
|
'-whitelist=127.0.0.1', |
|
|
@ -142,7 +142,8 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
self.sync_all() |
|
|
|
|
|
|
|
result = rpc.getwalletinfo() |
|
|
|
balance2 = result['balance'] |
|
|
|
# minus one block reward |
|
|
|
balance2 = result['balance'] - 100000 |
|
|
|
# make sure our balance is less now |
|
|
|
assert_greater_than(balance, balance2) |
|
|
|
|
|
|
@ -168,6 +169,13 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
|
|
|
|
def run_dice_tests(self): |
|
|
|
rpc = self.nodes[0] |
|
|
|
rpc1 = self.nodes[1] |
|
|
|
self.sync_all() |
|
|
|
|
|
|
|
# have to generate few blocks on second node to be able to place bets |
|
|
|
rpc1.generate(10) |
|
|
|
result = rpc1.getbalance() |
|
|
|
assert_greater_than(result, 100000) |
|
|
|
|
|
|
|
dice = rpc.diceaddress() |
|
|
|
assert_equal(dice['result'], 'success') |
|
|
@ -227,58 +235,49 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing 0 amount bet |
|
|
|
result = rpc.dicebet(dicename,diceid,"0","1") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"0","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing negative amount bet |
|
|
|
result = rpc.dicebet(dicename,diceid,"-1","1") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"-1","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet more than maxbet |
|
|
|
result = rpc.dicebet(dicename,diceid,"900","1") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"900","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet with amount more than funding |
|
|
|
result = rpc.dicebet(dicename,diceid,"3000","1") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"3000","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet with potential won more than funding |
|
|
|
result = rpc.dicebet(dicename,diceid,"750","9") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"750","9") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing 0 odds bet |
|
|
|
result = rpc.dicebet(dicename,diceid,"1","0") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"1","0") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing negative odds bet |
|
|
|
result = rpc.dicebet(dicename,diceid,"1","-1") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"1","-1") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet with odds more than allowed |
|
|
|
result = rpc.dicebet(dicename,diceid,"1","11") |
|
|
|
result = rpc1.dicebet(dicename,diceid,"1","11") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet with not correct dice name |
|
|
|
result = rpc.dicebet("nope",diceid,"100","1") |
|
|
|
result = rpc1.dicebet("nope",diceid,"100","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# placing bet with not correct dice id |
|
|
|
result = rpc.dicebet(dicename,self.pubkey,"100","1") |
|
|
|
result = rpc1.dicebet(dicename,self.pubkey,"100","2") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# valid bet placing |
|
|
|
placebet = rpc.dicebet(dicename,diceid,"100","1") |
|
|
|
betid = self.send_and_mine(placebet["hex"], rpc) |
|
|
|
assert result, "bet placed" |
|
|
|
|
|
|
|
# check bet status |
|
|
|
result = rpc.dicestatus(dicename,diceid,betid) |
|
|
|
assert_success(result) |
|
|
|
|
|
|
|
# have to make some entropy for the next test |
|
|
|
entropytx = 0 |
|
|
|
fundingsum = 1 |
|
|
|
while entropytx < 10: |
|
|
|
while entropytx < 110: |
|
|
|
fundingsuminput = str(fundingsum) |
|
|
|
fundinghex = rpc.diceaddfunds(dicename,diceid,fundingsuminput) |
|
|
|
result = self.send_and_mine(fundinghex['hex'], rpc) |
|
|
@ -286,33 +285,49 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
fundingsum = fundingsum + 1 |
|
|
|
|
|
|
|
rpc.generate(2) |
|
|
|
self.sync_all() |
|
|
|
|
|
|
|
# valid bet placing |
|
|
|
placebet = rpc1.dicebet(dicename,diceid,"100","2") |
|
|
|
betid = self.send_and_mine(placebet["hex"], rpc1) |
|
|
|
assert result, "bet placed" |
|
|
|
|
|
|
|
# check bet status |
|
|
|
result = rpc1.dicestatus(dicename,diceid,betid) |
|
|
|
assert_success(result) |
|
|
|
|
|
|
|
# note initial dice funding state at this point. |
|
|
|
# TODO: track player balance somehow (hard to do because of mining and fees) |
|
|
|
diceinfo = rpc.diceinfo(diceid) |
|
|
|
funding = float(diceinfo['funding']) |
|
|
|
|
|
|
|
# placing same amount bets with amount 1 and odds 1:2, checking if balance changed correct |
|
|
|
losscounter = 0 |
|
|
|
wincounter = 0 |
|
|
|
betcounter = 0 |
|
|
|
|
|
|
|
while (betcounter < 10): |
|
|
|
placebet = rpc.dicebet(dicename,diceid,"1","1") |
|
|
|
betid = self.send_and_mine(placebet["hex"], rpc) |
|
|
|
finish = rpc.dicefinish(dicename,diceid,betid) |
|
|
|
self.send_and_mine(finish["hex"], rpc) |
|
|
|
betresult = rpc.dicestatus(dicename,diceid,betid) |
|
|
|
betcounter = betcounter + 1 |
|
|
|
if betresult["status"] == "loss": |
|
|
|
losscounter = losscounter + 1 |
|
|
|
elif betresult["status"] == "win": |
|
|
|
wincounter = wincounter + 1 |
|
|
|
|
|
|
|
# funding balance should increase if player loss, decrease if player won |
|
|
|
fundbalanceguess = funding + losscounter - wincounter |
|
|
|
fundinfoactual = rpc.diceinfo(diceid) |
|
|
|
assert_equal(round(fundbalanceguess),round(float(fundinfoactual['funding']))) |
|
|
|
# # placing same amount bets with amount 1 and odds 1:3, checking if balance changed correct |
|
|
|
# losscounter = 0 |
|
|
|
# wincounter = 0 |
|
|
|
# betcounter = 0 |
|
|
|
# |
|
|
|
# while (betcounter < 10): |
|
|
|
# placebet = rpc1.dicebet(dicename,diceid,"1","2") |
|
|
|
# betid = self.send_and_mine(placebet["hex"], rpc1) |
|
|
|
# time.sleep(3) |
|
|
|
# self.sync_all() |
|
|
|
# finish = rpc.dicefinish(dicename,diceid,betid) |
|
|
|
# self.send_and_mine(finish["hex"], rpc1) |
|
|
|
# self.sync_all() |
|
|
|
# time.sleep(3) |
|
|
|
# betresult = rpc1.dicestatus(dicename,diceid,betid) |
|
|
|
# betcounter = betcounter + 1 |
|
|
|
# if betresult["status"] == "loss": |
|
|
|
# losscounter = losscounter + 1 |
|
|
|
# elif betresult["status"] == "win": |
|
|
|
# wincounter = wincounter + 1 |
|
|
|
# else: |
|
|
|
# pass |
|
|
|
# |
|
|
|
# # funding balance should increase if player loss, decrease if player won |
|
|
|
# fundbalanceguess = funding + losscounter - wincounter * 2 |
|
|
|
# fundinfoactual = rpc.diceinfo(diceid) |
|
|
|
# assert_equal(round(fundbalanceguess),round(float(fundinfoactual['funding']))) |
|
|
|
|
|
|
|
def run_token_tests(self): |
|
|
|
rpc = self.nodes[0] |
|
|
@ -651,18 +666,13 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
too_long_description = generate_random_string(4100) |
|
|
|
result = rpc.oraclescreate("Test", too_long_description, "s") |
|
|
|
assert_error(result) |
|
|
|
|
|
|
|
# valid creating oracles of different types |
|
|
|
# using such naming to re-use it for data publishing / reading (e.g. oracle_s for s type) |
|
|
|
valid_formats = ["s", "S", "d", "D", "c", "C", "t", "T", "i", "I", "l", "L", "h", "Ihh"] |
|
|
|
for f in valid_formats: |
|
|
|
result = rpc.oraclescreate("Test", "Test", f) |
|
|
|
assert_success(result) |
|
|
|
globals()["oracle_{}".format(f)] = self.send_and_mine(result['hex'], rpc) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# # valid creating oracles of different types |
|
|
|
# # using such naming to re-use it for data publishing / reading (e.g. oracle_s for s type) |
|
|
|
# valid_formats = ["s", "S", "d", "D", "c", "C", "t", "T", "i", "I", "l", "L", "h", "Ihh"] |
|
|
|
# for f in valid_formats: |
|
|
|
# result = rpc.oraclescreate("Test", "Test", f) |
|
|
|
# assert_success(result) |
|
|
|
# globals()["oracle_{}".format(f)] = self.send_and_mine(result['hex'], rpc) |
|
|
|
|
|
|
|
def run_test (self): |
|
|
|
print("Mining blocks...") |
|
|
@ -681,7 +691,6 @@ class CryptoConditionsTest (BitcoinTestFramework): |
|
|
|
self.run_rewards_tests() |
|
|
|
self.run_dice_tests() |
|
|
|
self.run_token_tests() |
|
|
|
self.run_faucet_tests() |
|
|
|
self.run_oracles_tests() |
|
|
|
|
|
|
|
|
|
|
|