コード例 #1
0
 def test_ltge(self):
     a1 = Amount(1, self.symbol)
     a2 = Amount(2, self.symbol)
     self.assertTrue(a1 < a2)
     self.assertTrue(a2 > a1)
     self.assertTrue(a2 > 1)
     self.assertTrue(a1 < 5)
コード例 #2
0
 def test_leeq(self):
     a1 = Amount(1, self.symbol)
     a2 = Amount(1, self.symbol)
     self.assertTrue(a1 <= a2)
     self.assertTrue(a1 >= a2)
     self.assertTrue(a1 <= 1)
     self.assertTrue(a1 >= 1)
コード例 #3
0
 def test_ne(self):
     a1 = Amount(1, self.symbol)
     a2 = Amount(2, self.symbol)
     self.assertTrue(a1 != a2)
     self.assertTrue(a1 != 5)
     a1 = Amount(1, self.symbol)
     a2 = Amount(1, self.symbol)
     self.assertTrue(a1 == a2)
     self.assertTrue(a1 == 1)
コード例 #4
0
 def test_pow(self):
     a1 = Amount(15, self.symbol)
     self.dotest(a1**3, 15**3, self.symbol)
     self.dotest(a1**2, 15**2, self.symbol)
     with self.assertRaises(Exception):
         a1**Amount(1, asset=self.asset2)
     # inline
     a2 = a1.copy()
     a2 **= 3
     self.dotest(a2, 15**3, self.symbol)
     with self.assertRaises(Exception):
         a1 **= Amount(2, asset=self.asset2)
コード例 #5
0
 def test_mod(self):
     a1 = Amount(15, self.symbol)
     self.dotest(a1 % 3, 0, self.symbol)
     self.dotest(a1 % 2, 1, self.symbol)
     with self.assertRaises(Exception):
         a1 % Amount(1, asset=self.asset2)
     # inline
     a2 = a1.copy()
     a2 %= 3
     self.dotest(a2, 0, self.symbol)
     with self.assertRaises(Exception):
         a1 %= Amount(2, asset=self.asset2)
コード例 #6
0
 def test_mul(self):
     a1 = Amount(5, self.symbol)
     a2 = Amount(2, self.symbol)
     self.dotest(a1 * a2, 10, self.symbol)
     self.dotest(a1 * 3, 15, self.symbol)
     with self.assertRaises(Exception):
         a1 * Amount(1, asset=self.asset2)
     # inline
     a2 = Amount(2, self.symbol)
     a2 *= 5
     self.dotest(a2, 10, self.symbol)
     with self.assertRaises(Exception):
         a1 *= Amount(2, asset=self.asset2)
コード例 #7
0
 def test_plus(self):
     a1 = Amount(1, self.symbol)
     a2 = Amount(2, self.symbol)
     self.dotest(a1 + a2, 3, self.symbol)
     with self.assertRaises(Exception):
         a1 + Amount(1, asset=self.asset2)
     # inline
     a2 = Amount(2, self.symbol)
     a2 += a1
     self.dotest(a2, 3, self.symbol)
     a2 += 5
     self.dotest(a2, 8, self.symbol)
     with self.assertRaises(Exception):
         a1 += Amount(1, asset=self.asset2)
コード例 #8
0
 def test_minus(self):
     a1 = Amount(1, self.symbol)
     a2 = Amount(2, self.symbol)
     self.dotest(a1 - a2, -1, self.symbol)
     self.dotest(a1 - 5, -4, self.symbol)
     with self.assertRaises(Exception):
         a1 - Amount(1, asset=self.asset2)
     # inline
     a2 = Amount(2, self.symbol)
     a2 -= a1
     self.dotest(a2, 1, self.symbol)
     a2 -= 1
     self.dotest(a2, 0, self.symbol)
     self.dotest(a2 - 2, -2, self.symbol)
     with self.assertRaises(Exception):
         a1 -= Amount(1, asset=self.asset2)
コード例 #9
0
def placeBets():
    try:
        account = request.args.get("account")
        if account is None:
            return make_response(
                jsonify(error="Specify account in query params"), 500)
        body = request.get_json()
        response = []
        for bet in body:
            asset_symbol = bet['asset_symbol']
            bet_amount = bet['bet_amount']
            betting_market_id = bet['betting_market_id']
            odds = bet['odds']
            back_or_lay = bet['back_or_lay']
            a = Amount(bet_amount, asset_symbol)
            #right now, we will place bets successfully one by one until one breaks.
            #the user will be confused whether any of the bets got placed or not
            bet_response = ppy.bet_place(betting_market_id,
                                         a,
                                         odds,
                                         back_or_lay,
                                         account,
                                         fee_asset=asset_symbol)
            response.append(bet_response)
        return jsonify(response)
    except Exception as e:
        return make_response(jsonify(error=e.__doc__), 500)
コード例 #10
0
def placeSingleBet():
	try:
		accountStr = request.args.get("account")
		if accountStr is None:
			return make_response(jsonify(error="Specify account in query params"), 500)
		account = Account(accountStr, peerplays_instance = ppy, full=True)
		body = request.get_json()
		asset_symbol = body['asset_symbol']
		bet_amount = body['bet_amount']
		betting_market_id = body['betting_market_id']
		odds = body['odds']
		back_or_lay = body['back_or_lay']
		a  = Amount(bet_amount, asset_symbol)
		ppy.bet_place(betting_market_id, a, odds, back_or_lay, account['id'], fee_asset = asset_symbol)
		time.sleep(3) # until next block is produced
		unmatchedBets = bookie.getUnmatchedBets(account['id'])
		for bet in reversed(unmatchedBets):
			if bet['betting_market_id'] == betting_market_id and bet['back_or_lay'] == back_or_lay and bet['backer_multiplier'] == odds * 10000: #10000 = precision
				return jsonify(bet)
		# only reachable if bet has already been fully matched
		matchedBets = bookie.getMatchedBets(account['id'])
		for bet in matchedBets:
			if bet['betting_market_id'] == betting_market_id and bet['back_or_lay'] == back_or_lay and bet['backer_multiplier'] == odds * 10000: #10000 = precision
				return jsonify(bet)
	except Exception as e:
		return make_response(jsonify(error=e.__doc__), 500)
コード例 #11
0
    def test_bet_place(self):
        def new_refresh(self):
            dict.__init__(self, {"id": "1.21.11123"})

        with mock.patch("peerplays.bettingmarket.BettingMarket.refresh",
                        new=new_refresh):
            self.ppy.bet_place(
                "1.21.11123",
                Amount(1244, "PPY"),
                2,
                "back",
            )
            tx = self.ppy.tx().json()
            ops = tx["operations"]
            op = ops[0][1]
            self.assertEqual(len(ops), 1)
            self.assertEqual(getOperationNameForId(ops[0][0]), "bet_place")
            self.assertEqual(op["amount_to_bet"], {
                'amount': 124400000,
                'asset_id': '1.3.0'
            })
            self.assertEqual(op["back_or_lay"], "back")
            self.assertEqual(op["backer_multiplier"], 2 * 10000)
            self.assertEqual(
                op["betting_market_id"],
                "1.21.11123",
            )
            self.assertEqual(
                op["bettor_id"],
                "1.2.7",
            )
コード例 #12
0
def placeBetHelper(market_id, runner, index, ppy):
    amount = Amount(random.uniform(0.02, 0.08), "BTF")
    odds = odds_round(runner['prices'][index]['odds'])
    start_time = time.time()
    print(
        ppy.bet_place(market_id,
                      amount,
                      odds,
                      runner['prices'][index]['side'],
                      fee_asset="1.3.1"))
    end_time = time.time()
コード例 #13
0
 def test_bet_place(self):
     tx = peerplays.bet_place("1.25.2950", Amount(1244, "1.3.0"), 2, "back")
     ops = tx["operations"]
     op = ops[0][1]
     self.assertEqual(len(ops), 1)
     self.assertEqual(getOperationNameForId(ops[0][0]), "bet_place")
     self.assertEqual(
         op["amount_to_bet"], {"amount": 124400000, "asset_id": "1.3.0"}
     )
     self.assertEqual(op["back_or_lay"], "back")
     self.assertEqual(op["backer_multiplier"], 2 * 10000)
     self.assertEqual(op["betting_market_id"], "1.25.2950")
     self.assertEqual(op["bettor_id"], "1.2.7")
コード例 #14
0
 def test_transfer(self):
     tx = peerplays.transfer("1.2.8",
                             1.33,
                             core_unit,
                             memo="Foobar",
                             account="1.2.7")
     self.assertEqual(getOperationNameForId(tx["operations"][0][0]),
                      "transfer")
     op = tx["operations"][0][1]
     self.assertIn("memo", op)
     self.assertEqual(op["from"], "1.2.7")
     self.assertEqual(op["to"], "1.2.8")
     amount = Amount(op["amount"])
     self.assertEqual(float(amount), 1.33)
コード例 #15
0
    def test_init(self):
        # String init
        amount = Amount("1 {}".format(self.symbol))
        self.dotest(amount, 1, self.symbol)

        # Amount init
        amount = Amount(amount)
        self.dotest(amount, 1, self.symbol)

        # blockchain dict init
        amount = Amount({
            "amount": 1 * 10**self.precision,
            "asset_id": self.asset["id"]
        })
        self.dotest(amount, 1, self.symbol)

        # API dict init
        amount = Amount({
            "amount": 1.3 * 10**self.precision,
            "asset": self.asset["id"]
        })
        self.dotest(amount, 1.3, self.symbol)

        # Asset as symbol
        amount = Amount(1.3, Asset("1.3.0"))
        self.dotest(amount, 1.3, self.symbol)

        # Asset as symbol
        amount = Amount(1.3, self.symbol)
        self.dotest(amount, 1.3, self.symbol)

        # keyword inits
        amount = Amount(amount=1.3, asset=Asset("1.3.0"))
        self.dotest(amount, 1.3, self.symbol)

        # keyword inits
        amount = Amount(amount=1.3, asset=dict(Asset("1.3.0")))
        self.dotest(amount, 1.3, self.symbol)

        # keyword inits
        amount = Amount(amount=1.3, asset=self.symbol)
        self.dotest(amount, 1.3, self.symbol)
コード例 #16
0
 def test_div(self):
     a1 = Amount(15, self.symbol)
     self.dotest(a1 / 3, 5, self.symbol)
     self.dotest(a1 // 2, 7, self.symbol)
     with self.assertRaises(Exception):
         a1 / Amount(1, asset=self.asset2)
     # inline
     a2 = a1.copy()
     a2 /= 3
     self.dotest(a2, 5, self.symbol)
     a2 = a1.copy()
     a2 //= 2
     self.dotest(a2, 7, self.symbol)
     with self.assertRaises(Exception):
         a1 *= Amount(2, asset=self.asset2)
コード例 #17
0
def fees(ctx):
    """ List fees
    """
    from peerplaysbase.operationids import getOperationNameForId

    chain = Blockchain(peerplays_instance=ctx.peerplays)
    feesObj = chain.chainParameters().get("current_fees")
    fees = feesObj["parameters"]

    t = PrettyTable(["Operation", "Type", "Fee"])
    t.align = "l"
    t.align["Fee"] = "r"

    for fee in fees:
        for f in fee[1]:
            t.add_row([
                getOperationNameForId(fee[0]),
                f,
                str(Amount({
                    "amount": fee[1].get(f, 0),
                    "asset_id": "1.3.0"
                })),
            ])
    click.echo(t)
コード例 #18
0
 def test_float(self):
     self.assertEqual(float(Amount("1", self.symbol)), 1.00000)
コード例 #19
0
 def test_int(self):
     self.assertEqual(int(Amount("1", self.symbol)), 100000)
コード例 #20
0
 def test_string(self):
     self.assertEqual(str(Amount("1", self.symbol)),
                      "1.00000 {}".format(self.symbol))
コード例 #21
0
 def test_json(self):
     amount = Amount("1", self.symbol)
     self.assertEqual(amount.json(), {
         "asset_id": self.asset["id"],
         "amount": 1 * 10**self.precision
     })
コード例 #22
0
 def test_tuple(self):
     amount = Amount("1", self.symbol)
     self.assertEqual(amount.tuple(), (1.0, self.symbol))
コード例 #23
0
 def test_properties(self):
     amount = Amount("1", self.symbol)
     self.assertEqual(amount.amount, 1.0)
     self.assertEqual(amount.symbol, self.symbol)
     self.assertIsInstance(amount.asset, Asset)
     self.assertEqual(amount.asset["symbol"], self.symbol)
コード例 #24
0
 def test_copy(self):
     amount = Amount("1", self.symbol)
     self.dotest(amount.copy(), 1, self.symbol)