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)
Exemple #3
0
    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)
Exemple #7
0
    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")
Exemple #10
0
    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"])
Exemple #11
0
 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"]