Exemple #1
0
    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))
Exemple #2
0
    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)
Exemple #3
0
 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)
Exemple #4
0
    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')
Exemple #5
0
 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")
Exemple #6
0
 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)
Exemple #7
0
    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"))
Exemple #8
0
 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")
Exemple #9
0
 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")
Exemple #10
0
    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"])
Exemple #11
0
 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"]