def test_assert_equal(self, node_param): if node_param == "normal": stm = self.bts else: stm = self.creait asset1 = Asset("CBD", full=False, crea_instance=stm) asset2 = Asset("CBD", full=False, crea_instance=stm) self.assertTrue(asset1 == asset2) self.assertTrue(asset1 == "CBD") self.assertTrue(asset2 == "CBD") asset3 = Asset("CREA", full=False, crea_instance=stm) self.assertTrue(asset1 != asset3) self.assertTrue(asset3 != "CBD") self.assertTrue(asset1 != "CREA") a = { 'asset': '@@000000021', 'precision': 3, 'id': 'CREA', 'symbol': 'CREA' } b = { 'asset': '@@000000021', 'precision': 3, 'id': '@@000000021', 'symbol': 'CREA' } self.assertTrue( Asset(a, crea_instance=stm) == Asset(b, crea_instance=stm))
def test_init(self): stm = self.bts # String init asset = Asset("CBD", crea_instance=stm) symbol = asset["symbol"] precision = asset["precision"] amount = Amount("1 {}".format(symbol), crea_instance=stm) self.dotest(amount, 1, symbol) # Amount init amount = Amount(amount, crea_instance=stm) self.dotest(amount, 1, symbol) # blockchain dict init amount = Amount({ "amount": 1 * 10**precision, "asset_id": asset["id"] }, crea_instance=stm) self.dotest(amount, 1, symbol) # API dict init amount = Amount({ "amount": 1.3 * 10**precision, "asset": asset["id"] }, crea_instance=stm) self.dotest(amount, 1.3, symbol) # Asset as symbol amount = Amount(1.3, Asset("CBD"), crea_instance=stm) self.dotest(amount, 1.3, symbol) # Asset as symbol amount = Amount(1.3, symbol, crea_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=Asset("CBD", crea_instance=stm), crea_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=dict(Asset("CBD", crea_instance=stm)), crea_instance=stm) self.dotest(amount, 1.3, symbol) # keyword inits amount = Amount(amount=1.3, asset=symbol, crea_instance=stm) self.dotest(amount, 1.3, symbol)
def test_market(self): bts = self.bts m1 = Market(u'CREA', u'CBD', crea_instance=bts) self.assertEqual(m1.get_string(), u'CBD:CREA') m2 = Market(crea_instance=bts) self.assertEqual(m2.get_string(), u'CBD:CREA') m3 = Market(u'CREA:CBD', crea_instance=bts) self.assertEqual(m3.get_string(), u'CREA:CBD') self.assertTrue(m1 == m2) base = Asset("CBD", crea_instance=bts) quote = Asset("CREA", crea_instance=bts) m = Market(base, quote, crea_instance=bts) self.assertEqual(m.get_string(), u'CREA:CBD')
def test_assert(self, node_param): if node_param == "normal": stm = self.bts else: stm = self.creait with self.assertRaises(AssetDoesNotExistsException): Asset("FOObarNonExisting", full=False, crea_instance=stm)
def setUpClass(cls): nodelist = NodeList() nodelist.update_nodes(crea_instance=Crea( node=nodelist.get_nodes(exclude_limited=False), num_retries=10)) cls.bts = Crea(node=nodelist.get_nodes(exclude_limited=True), nobroadcast=True, num_retries=10) cls.creait = Crea(node="https://nodes.creary.net", nobroadcast=True, use_condenser=False, num_retries=10) set_shared_crea_instance(cls.bts) cls.asset = Asset("CBD") cls.symbol = cls.asset["symbol"] cls.precision = cls.asset["precision"] cls.asset2 = Asset("CREA")
def test_properties(self, node_param, data, symbol_str, precision, asset_str): if node_param == "normal": stm = self.bts else: stm = self.testnet asset = Asset(data, full=False, crea_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 CREA/CBD") Price(1.0, "CREA/CBD") Price(0.315, base="CREA", quote="CBD") Price(0.315, base=Asset("CREA"), quote=Asset("CBD")) Price({ "base": { "amount": 1, "asset_id": "CBD" }, "quote": { "amount": 10, "asset_id": "CREA" } }) Price("", quote="10 CBD", base="1 CREA") Price("10 CBD", "1 CREA") Price(Amount("10 CBD"), Amount("1 CREA"))
def test_json_appbase(self): asset = Asset("CBD", crea_instance=self.bts) amount = Amount("1", asset, new_appbase_format=False, crea_instance=self.bts) if self.bts.rpc.get_use_appbase(): self.assertEqual( amount.json(), [str(1 * 10**asset.precision), asset.precision, asset.asset]) else: self.assertEqual(amount.json(), "1.000 CBD")
def test_json_appbase2(self): asset = Asset("CBD", crea_instance=self.bts) amount = Amount("1", asset, new_appbase_format=True, crea_instance=self.bts) if self.bts.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 CBD")
def __init__(self, amount, asset=None, new_appbase_format=True, crea_instance=None): self["asset"] = {} self.new_appbase_format = new_appbase_format self.crea = crea_instance or shared_crea_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], crea_instance=self.crea) 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"], crea_instance=self.crea) 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"], crea_instance=self.crea) 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"], crea_instance=self.crea) 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"], crea_instance=self.crea) 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, crea_instance=self.crea) 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, crea_instance=self.crea) 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:`crea.asset.Asset` """ if not self["asset"]: self["asset"] = Asset(self["symbol"], crea_instance=self.crea) return self["asset"]