def test_sell(self, node_param): if node_param == "non_appbase": bts = self.bts else: bts = self.appbase bts.txbuffer.clear() m = Market(u'BEX:BBD', dpay_instance=bts) tx = m.sell(5, 0.1, account="test") self.assertEqual((tx["operations"][0][0]), "limit_order_create") op = tx["operations"][0][1] self.assertIn("test", op["owner"]) self.assertEqual(str(Amount('0.500 BBD', dpay_instance=bts)), op["min_to_receive"]) self.assertEqual(str(Amount('0.100 BEX', dpay_instance=bts)), op["amount_to_sell"]) p = Price(5, u"BBD:BEX") tx = m.sell(p, 0.1, account="test") op = tx["operations"][0][1] self.assertEqual(str(Amount('0.500 BBD', dpay_instance=bts)), op["min_to_receive"]) self.assertEqual(str(Amount('0.100 BEX', dpay_instance=bts)), op["amount_to_sell"]) p = Price(5, u"BBD:BEX", dpay_instance=bts) a = Amount(0.1, "BEX", dpay_instance=bts) tx = m.sell(p, a, account="test") op = tx["operations"][0][1] self.assertEqual(str(Amount('0.500 BBD', dpay_instance=bts)), op["min_to_receive"]) self.assertEqual(str(Amount('0.100 BEX', dpay_instance=bts)), op["amount_to_sell"])
def test_ne(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "BEX/BBD") self.assertTrue(p1 != p2) self.assertTrue(p1 == p1) self.assertTrue(p1 != 5) self.assertTrue(p1 == 10)
def test_leeq(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "BEX/BBD") self.assertTrue(p1 >= p2) self.assertTrue(p2 <= p1) self.assertTrue(p1 >= 5) self.assertTrue(p2 <= 10)
def test_ltge(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "BEX/BBD") self.assertTrue(p1 > p2) self.assertTrue(p2 < p1) self.assertTrue(p1 > 5) self.assertTrue(p2 < 10)
def test_div(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "BEX/VESTS") # 10 BEX/BBD / 5 BEX/VESTS = 2 VESTS/BBD p3 = p1 / p2 p4 = p3.as_base("VESTS") self.assertEqual(p4["base"]["symbol"], "VESTS") self.assertEqual(p4["quote"]["symbol"], "BBD") # 10 BEX/BBD * 0.2 VESTS/BEX = 2 VESTS/BBD = 0.5 BBD/VESTS self.assertEqual(float(p4), 2)
def test_div2(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "BEX/BBD") # 10 BEX/BBD / 5 BEX/VESTS = 2 VESTS/BBD p3 = p1 / p2 self.assertTrue(isinstance(p3, (float, int))) self.assertEqual(float(p3), 2.0) p3 = p1 / 5 self.assertEqual(float(p3), 2.0) p3 = p1 / Amount("1 BBD") self.assertEqual(float(p3), 0.1) p3 = p1 p3 /= p2 self.assertEqual(float(p3), 2.0) p3 = p1 p3 /= 5 self.assertEqual(float(p3), 2.0)
def test_price(self, node_param): if node_param == "instance": set_shared_dpay_instance(self.bts) o = Price(10.0, "BEX/BBD") self.assertIn(o.dpay.rpc.url, self.urls) with self.assertRaises(RPCConnection): Price(10.0, "BEX/BBD", dpay_instance=DPay(node="https://abc.d", autoconnect=False, num_retries=1)) else: set_shared_dpay_instance( DPay(node="https://abc.d", autoconnect=False, num_retries=1)) stm = self.bts o = Price(10.0, "BEX/BBD", dpay_instance=stm) self.assertIn(o.dpay.rpc.url, self.urls) with self.assertRaises(RPCConnection): Price(10.0, "BEX/BBD")
def test_multiplication(self): p1 = Price(10.0, "BEX/BBD") p2 = Price(5.0, "VESTS/BEX") p3 = p1 * p2 p4 = p3.as_base("BBD") p4_2 = p3.as_quote("VESTS") self.assertEqual(p4["quote"]["symbol"], "VESTS") self.assertEqual(p4["base"]["symbol"], "BBD") # 10 BEX/BBD * 0.2 VESTS/BEX = 50 VESTS/BBD = 0.02 BBD/VESTS self.assertEqual(float(p4), 0.02) self.assertEqual(p4_2["quote"]["symbol"], "VESTS") self.assertEqual(p4_2["base"]["symbol"], "BBD") self.assertEqual(float(p4_2), 0.02) p3 = p1 * 5 self.assertEqual(float(p3), 50) # Inline multiplication p5 = Price(10.0, "BEX/BBD") p5 *= p2 p4 = p5.as_base("BBD") self.assertEqual(p4["quote"]["symbol"], "VESTS") self.assertEqual(p4["base"]["symbol"], "BBD") # 10 BEX/BBD * 0.2 VESTS/BEX = 2 VESTS/BBD = 0.02 BBD/VESTS self.assertEqual(float(p4), 0.02) p6 = Price(10.0, "BEX/BBD") p6 *= 5 self.assertEqual(float(p6), 50)
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"))