Example #1
0
    def setUp(self):
        self.market1 = MockMarket(price_currency="USD", amount_currency="BTC")
        self.market1.set_mock_depth(depthUSDBTC)

        self.market2 = MockMarket(price_currency="BTC", amount_currency="LTC")
        self.market2.set_mock_depth(depthLTCBTC)

        self.market3 = MockMarket(amount_currency="LTC", price_currency="USD")
        self.market3.set_mock_depth(depthLTCUSD)

        self.chain = MarketChain(self.market1, self.market2, self.market3)
    def setUp(self):
        self.market1 = MockMarket(price_currency="USD", amount_currency="BTC")
        self.market1.set_mock_depth(depthUSDBTC)

        self.market2 = MockMarket(price_currency="BTC", amount_currency="LTC")
        self.market2.set_mock_depth(depthLTCBTC)

        self.market3 = MockMarket(amount_currency="LTC", price_currency="USD")
        self.market3.set_mock_depth(depthLTCUSD)

        self.chain = MarketChain(
            self.market1, self.market2, self.market3
        )
Example #3
0
class TestMarketChain(unittest.TestCase):
    def setUp(self):
        self.market1 = MockMarket(price_currency="USD", amount_currency="BTC")
        self.market1.set_mock_depth(depthUSDBTC)

        self.market2 = MockMarket(price_currency="BTC", amount_currency="LTC")
        self.market2.set_mock_depth(depthLTCBTC)

        self.market3 = MockMarket(amount_currency="LTC", price_currency="USD")
        self.market3.set_mock_depth(depthLTCUSD)

        self.chain = MarketChain(self.market1, self.market2, self.market3)

    def test_profit_functions(self):
        tradechain = self.chain.next()
        assert tradechain.profit == 0.72
        assert tradechain.percentage == 21.95

        # Make sure we're unlocked.
        assert not self.chain.locked

        self.chain.begin_transaction()

        tradechain = self.chain.next()
        assert tradechain.profit == 0.34
        assert tradechain.percentage == 20.73

        # Make sure we're still locked.
        assert self.chain.locked

        tradechain = self.chain.next()
        assert tradechain.profit == -0.804
        assert tradechain.percentage == -44.57

        self.chain.end_transaction()

        # Make sure we're unlocked now.
        assert not self.chain.locked
class TestMarketChain(unittest.TestCase):
    def setUp(self):
        self.market1 = MockMarket(price_currency="USD", amount_currency="BTC")
        self.market1.set_mock_depth(depthUSDBTC)

        self.market2 = MockMarket(price_currency="BTC", amount_currency="LTC")
        self.market2.set_mock_depth(depthLTCBTC)

        self.market3 = MockMarket(amount_currency="LTC", price_currency="USD")
        self.market3.set_mock_depth(depthLTCUSD)

        self.chain = MarketChain(self.market1, self.market2, self.market3)

    def test_profit_functions(self):
        self.chain.begin_transaction()

        tradechain = self.chain.next()
        assert tradechain.profit == 0.72
        assert tradechain.percentage == 21.95

        tradechain = self.chain.next()
        assert tradechain.profit == 0.34
        assert tradechain.percentage == 20.73

        # Make sure we're still locked.
        assert self.chain.locked

        tradechain = self.chain.next()
        assert tradechain.profit == -0.804
        assert tradechain.percentage == -44.57

        self.chain.end_transaction()

        # Make sure we're unlocked now.
        assert not self.chain.locked

    def test_market_depth_integrity(self):
        """Make sure Markets shared across MarketChains don't suffer depth
        depletion in the course of normal trade chain exploration.

        """
        chain_copy = self.chain.copy()

        self.chain.begin_transaction()
        tradechain = self.chain.next()
        self.chain.end_transaction()

        chain_copy.begin_transaction()
        tradechain2 = chain_copy.next()
        chain_copy.end_transaction()

        # Make sure that the original MarketChain and its copy both
        # produce the same TradeChain when the first one was produced
        # inside a transaction. Transactions protect Market.depth from
        # permanent mutation.
        self.assertEqual(tradechain.profit, tradechain2.profit)
class TestMarketChain(unittest.TestCase):
    def setUp(self):
        self.market1 = MockMarket(price_currency="USD", amount_currency="BTC")
        self.market1.set_mock_depth(depthUSDBTC)

        self.market2 = MockMarket(price_currency="BTC", amount_currency="LTC")
        self.market2.set_mock_depth(depthLTCBTC)

        self.market3 = MockMarket(amount_currency="LTC", price_currency="USD")
        self.market3.set_mock_depth(depthLTCUSD)

        self.chain = MarketChain(
            self.market1, self.market2, self.market3
        )

    def test_profit_functions(self):
        self.chain.begin_transaction()

        tradechain = self.chain.next()
        assert tradechain.profit == 0.72
        assert tradechain.percentage == 21.95
        
        tradechain = self.chain.next()
        assert tradechain.profit == 0.34
        assert tradechain.percentage == 20.73
        
        # Make sure we're still locked.
        assert self.chain.locked

        tradechain = self.chain.next()
        assert tradechain.profit == -0.804
        assert tradechain.percentage == -44.57

        self.chain.end_transaction()

        # Make sure we're unlocked now.
        assert not self.chain.locked

    def test_market_depth_integrity(self):
        """Make sure Markets shared across MarketChains don't suffer depth
        depletion in the course of normal trade chain exploration.

        """
        chain_copy = self.chain.copy()

        self.chain.begin_transaction()
        tradechain = self.chain.next()
        self.chain.end_transaction()

        chain_copy.begin_transaction()
        tradechain2 = chain_copy.next()
        chain_copy.end_transaction()

        # Make sure that the original MarketChain and its copy both
        # produce the same TradeChain when the first one was produced
        # inside a transaction. Transactions protect Market.depth from
        # permanent mutation.
        self.assertEqual(tradechain.profit, tradechain2.profit)