def test_assert_equal(self, node_param): if node_param == "non_appbase": stm = self.bts else: stm = self.appbase asset1 = Asset("BBD", full=False, dpay_instance=stm) asset2 = Asset("BBD", full=False, dpay_instance=stm) self.assertTrue(asset1 == asset2) self.assertTrue(asset1 == "BBD") self.assertTrue(asset2 == "BBD") asset3 = Asset("BEX", full=False, dpay_instance=stm) self.assertTrue(asset1 != asset3) self.assertTrue(asset3 != "BBD") self.assertTrue(asset1 != "BEX") a = { 'asset': '@@000000021', 'precision': 3, 'id': 'BEX', 'symbol': 'BEX' } b = { 'asset': '@@000000021', 'precision': 3, 'id': '@@000000021', 'symbol': 'BEX' } self.assertTrue( Asset(a, dpay_instance=stm) == Asset(b, dpay_instance=stm))
def test_init(self, node_param): if node_param == "non_appbase": stm = self.bts else: stm = self.appbase # String init asset = Asset("BBD", dpay_instance=stm) symbol = asset["symbol"] precision = asset["precision"] amount = Amount("1 {}".format(symbol), dpay_instance=stm) self.dotest(amount, 1, symbol) # Amount init amount = Amount(amount, dpay_instance=stm) self.dotest(amount, 1, symbol) # blockchain dict init amount = Amount({ "amount": 1 * 10**precision, "asset_id": asset["id"] }, dpay_instance=stm) self.dotest(amount, 1, symbol) # API dict init amount = Amount({ "amount": 1.3 * 10**precision, "asset": asset["id"] }, dpay_instance=stm) self.dotest(amount, 1.3, symbol) # Asset as symbol amount = Amount(1.3, Asset("BBD"), dpay_instance=stm) self.dotest(amount, 1.3, symbol) # Asset as symbol amount = Amount(1.3, symbol, dpay_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=Asset("BBD", dpay_instance=stm), dpay_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=dict(Asset("BBD", dpay_instance=stm)), dpay_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=symbol, dpay_instance=stm) self.dotest(amount, 1.3, symbol)
def test_assert(self, node_param): if node_param == "non_appbase": stm = self.bts else: stm = self.appbase with self.assertRaises(AssetDoesNotExistsException): Asset("FOObarNonExisting", full=False, dpay_instance=stm)
def test_market(self, node_param): if node_param == "non_appbase": bts = self.bts else: bts = self.appbase m1 = Market(u'BEX', u'BBD', dpay_instance=bts) self.assertEqual(m1.get_string(), u'BBD:BEX') m2 = Market(dpay_instance=bts) self.assertEqual(m2.get_string(), u'BBD:BEX') m3 = Market(u'BEX:BBD', dpay_instance=bts) self.assertEqual(m3.get_string(), u'BEX:BBD') self.assertTrue(m1 == m2) base = Asset("BBD", dpay_instance=bts) quote = Asset("BEX", dpay_instance=bts) m = Market(base, quote, dpay_instance=bts) self.assertEqual(m.get_string(), u'BEX:BBD')
def setUpClass(cls): nodelist = NodeList() nodelist.update_nodes(dpay_instance=DPay(node=nodelist.get_nodes( normal=True, appbase=True), num_retries=10)) cls.bts = DPay(node=nodelist.get_nodes(appbase=False), nobroadcast=True, num_retries=10) cls.appbase = DPay(node=nodelist.get_nodes(normal=False, appbase=True), nobroadcast=True, use_condenser=False, num_retries=10) set_shared_dpay_instance(cls.bts) cls.asset = Asset("BBD") cls.symbol = cls.asset["symbol"] cls.precision = cls.asset["precision"] cls.asset2 = Asset("BEX")
def test_properties(self, node_param, data, symbol_str, precision, asset_str): if node_param == "non_appbase": stm = self.bts else: stm = self.appbase asset = Asset(data, full=False, dpay_instance=stm) self.assertEqual(asset.symbol, symbol_str) self.assertEqual(asset.precision, precision) self.assertEqual(asset.asset, asset_str)
def test_init(self): # self.assertEqual(1, 1) Price("0.315 BEX/BBD") Price(1.0, "BEX/BBD") Price(0.315, base="BEX", quote="BBD") Price(0.315, base=Asset("BEX"), quote=Asset("BBD")) Price({ "base": { "amount": 1, "asset_id": "BBD" }, "quote": { "amount": 10, "asset_id": "BEX" } }) Price("", quote="10 BBD", base="1 BEX") Price("10 BBD", "1 BEX") Price(Amount("10 BBD"), Amount("1 BEX"))
def test_json_appbase(self): asset = Asset("BBD", dpay_instance=self.appbase) amount = Amount("1", asset, new_appbase_format=False, dpay_instance=self.appbase) if self.appbase.rpc.get_use_appbase(): self.assertEqual( amount.json(), [str(1 * 10**asset.precision), asset.precision, asset.asset]) else: self.assertEqual(amount.json(), "1.000 BBD")
def test_json_appbase2(self): asset = Asset("BBD", dpay_instance=self.appbase) amount = Amount("1", asset, new_appbase_format=True, dpay_instance=self.appbase) if self.appbase.rpc.get_use_appbase(): self.assertEqual( amount.json(), { 'amount': str(1 * 10**asset.precision), 'nai': asset.asset, 'precision': asset.precision }) else: self.assertEqual(amount.json(), "1.000 BBD")
def __init__(self, amount, asset=None, new_appbase_format=True, dpay_instance=None): self["asset"] = {} self.new_appbase_format = new_appbase_format self.dpay = dpay_instance or shared_dpay_instance() if amount and asset is None and isinstance(amount, Amount): # Copy Asset object self["amount"] = amount["amount"] self["symbol"] = amount["symbol"] self["asset"] = amount["asset"] elif amount and asset is None and isinstance( amount, list) and len(amount) == 3: # Copy Asset object self["amount"] = int(amount[0]) / (10**amount[1]) self["asset"] = Asset(amount[2], dpay_instance=self.dpay) self["symbol"] = self["asset"]["symbol"] elif amount and asset is None and isinstance( amount, dict ) and "amount" in amount and "nai" in amount and "precision" in amount: # Copy Asset object self.new_appbase_format = True self["amount"] = int(amount["amount"]) / (10**amount["precision"]) self["asset"] = Asset(amount["nai"], dpay_instance=self.dpay) self["symbol"] = self["asset"]["symbol"] elif amount is not None and asset is None and isinstance( amount, string_types): self["amount"], self["symbol"] = amount.split(" ") self["asset"] = Asset(self["symbol"], dpay_instance=self.dpay) elif (amount and asset is None and isinstance(amount, dict) and "amount" in amount and "asset_id" in amount): self["asset"] = Asset(amount["asset_id"], dpay_instance=self.dpay) self["symbol"] = self["asset"]["symbol"] self["amount"] = int( amount["amount"]) / 10**self["asset"]["precision"] elif (amount and asset is None and isinstance(amount, dict) and "amount" in amount and "asset" in amount): self["asset"] = Asset(amount["asset"], dpay_instance=self.dpay) self["symbol"] = self["asset"]["symbol"] self["amount"] = int( amount["amount"]) / 10**self["asset"]["precision"] elif amount and asset and isinstance(asset, Asset): self["amount"] = amount self["symbol"] = asset["symbol"] self["asset"] = asset elif amount and asset and isinstance(asset, string_types): self["amount"] = amount self["asset"] = Asset(asset, dpay_instance=self.dpay) self["symbol"] = self["asset"]["symbol"] elif isinstance(amount, (integer_types, float)) and asset and isinstance( asset, Asset): self["amount"] = amount self["asset"] = asset self["symbol"] = self["asset"]["symbol"] elif isinstance(amount, (integer_types, float)) and asset and isinstance( asset, dict): self["amount"] = amount self["asset"] = asset self["symbol"] = self["asset"]["symbol"] elif isinstance(amount, (integer_types, float)) and asset and isinstance( asset, string_types): self["amount"] = amount self["asset"] = Asset(asset, dpay_instance=self.dpay) self["symbol"] = asset else: raise ValueError # make sure amount is a float self["amount"] = float(self["amount"])
def asset(self): """ Returns the asset as instance of :class:`dpay.asset.Asset` """ if not self["asset"]: self["asset"] = Asset(self["symbol"], dpay_instance=self.dpay) return self["asset"]