コード例 #1
0
 def testCannotAddIfPrevRecordExists(self):
     # len  8          1   12             1   6        6       10           1
     msg = '11111111' 'A' '000000000001' 'S' '000001' 'XYZxyz' '0000000005' 'Y'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     self.assertEqual('Duplicate Add record', result.message.split(':')[0])
コード例 #2
0
 def testCannotAddIfPrevRecordExists(self):
     # len  8          1   12             1   6        6       10           1
     msg = '11111111' 'A' '000000000001' 'S' '000001' 'XYZxyz' '0000000005' 'Y'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     self.assertEqual('Duplicate Add record', result.message.split(':')[0])
コード例 #3
0
 def testCannotHnadleUnknownMessage(self):
     # len  8          1   12             6        12
     msg = '00000011' '#' '000000000003' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(3, result.order_id)
     self.assertEqual('Unknown message type %r' % '#', result.message)
コード例 #4
0
 def testCannotCancelIfOrderIsNotOpen(self):
     # len  8          1   12             6
     msg = '11111111' 'X' '000000000002' '000011'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(2, result.order_id)
     self.assertEqual('Cannot cancel',
                      result.message.split('order')[0].strip())
コード例 #5
0
 def testCannotHnadleUnknownMessage(self):
     # len  8          1   12             6        12
     msg = '00000011' '#' '000000000003' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(3, result.order_id)
     self.assertEqual('Unknown message type %r' % '#',
                      result.message)
コード例 #6
0
 def testCannotHnadleMessageFromPast(self):
     # len  8          1   12             6        12
     msg = '00000011' 'E' '000000000001' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     self.assertEqual('Event \'E\' from past; already seen %d' % self.prev_timestamp,
                      result.message)
コード例 #7
0
 def testCannotCancelIfOrderIsNotOpen(self):
     # len  8          1   12             6     
     msg = '11111111' 'X' '000000000002' '000011'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(2, result.order_id)
     self.assertEqual('Cannot cancel',
                      result.message.split('order')[0].strip())
コード例 #8
0
 def testCanPartlyExecuteAnOpenOrder(self):
     # len  8          1   12             6        12
     msg = '11111111' 'E' '000000000001' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertTrue(result.success)
     self.assertEqual(self.order_id, result.record.order_id)
     self.assertEqual(11111111, result.record.timestamp)
     self.assertEqual(self.prev_record.amount - 2, result.record.amount)
     self.assertEqual(self.prev_record.price * 2, result.value)
コード例 #9
0
 def testCannotCancelMoreThanTheOpenOrderHas(self):
     # len  8          1   12             6
     msg = '11111111' 'X' '000000000001' '000011'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     # Built-in unittestslack a nice assertStartsWith()
     self.assertEqual('Trying to cancel 11 shares when only got 10',
                      result.message.split(':')[0])
コード例 #10
0
 def testCanComplelyCancelAnOpenOrder(self):
     # len  8          1   12             6
     msg = '11111111' 'X' '000000000001' '000010'
     result = H.handleMessage(self.orders_state, msg)
     self.assertTrue(result.success)
     self.assertEqual(self.order_id, result.record.order_id)
     self.assertEqual(11111111, result.record.timestamp)
     self.assertEqual(0, result.record.amount)
     self.assertEqual(0, result.value)
コード例 #11
0
 def testCanPartlyExecuteAnOpenOrder(self):
     # len  8          1   12             6        12
     msg = '11111111' 'E' '000000000001' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertTrue(result.success)
     self.assertEqual(self.order_id, result.record.order_id)
     self.assertEqual(11111111, result.record.timestamp)
     self.assertEqual(self.prev_record.amount - 2, result.record.amount)
     self.assertEqual(self.prev_record.price * 2, result.value)
コード例 #12
0
 def testCannotCancelMoreThanTheOpenOrderHas(self):
     # len  8          1   12             6     
     msg = '11111111' 'X' '000000000001' '000011'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     # Built-in unittestslack a nice assertStartsWith() 
     self.assertEqual('Trying to cancel 11 shares when only got 10',
                      result.message.split(':')[0])
コード例 #13
0
 def testCanComplelyCancelAnOpenOrder(self):
     # len  8          1   12             6     
     msg = '11111111' 'X' '000000000001' '000010'
     result = H.handleMessage(self.orders_state, msg)
     self.assertTrue(result.success)
     self.assertEqual(self.order_id, result.record.order_id)
     self.assertEqual(11111111, result.record.timestamp)
     self.assertEqual(0, result.record.amount)
     self.assertEqual(0, result.value)
コード例 #14
0
 def testCannotHnadleMessageFromPast(self):
     # len  8          1   12             6        12
     msg = '00000011' 'E' '000000000001' '000002' '0123456789ab'
     result = H.handleMessage(self.orders_state, msg)
     self.assertFalse(result.success)
     self.assertEqual(self.order_id, result.order_id)
     self.assertEqual(
         'Event \'E\' from past; already seen %d' % self.prev_timestamp,
         result.message)
コード例 #15
0
    def testCanAddIfNoPrevRecord(self):
        # len  8          1   12             1   6        6       10           1
        msg = '11111111' 'A' '000000000007' 'S' '000001' 'XYZxyz' '0000000005' 'Y'
        result = H.handleMessage(self.orders_state, msg)
        self.assertTrue(result.success)
        self.assertEqual(7, result.record.order_id)
        self.assertEqual(11111111, result.record.timestamp)
        self.assertEqual('XYZxyz', result.record.ticker)
        self.assertEqual(1, result.record.amount)
        self.assertEqual(5, result.record.price)

        self.assertEqual('XYZxyz', result.ticker)
        self.assertEqual(0, result.value)
コード例 #16
0
 def testCanAddIfNoPrevRecord(self):
     # len  8          1   12             1   6        6       10           1
     msg = '11111111' 'A' '000000000007' 'S' '000001' 'XYZxyz' '0000000005' 'Y'
     result = H.handleMessage(self.orders_state, msg)
     self.assertTrue(result.success)
     self.assertEqual(7, result.record.order_id)
     self.assertEqual(11111111, result.record.timestamp)
     self.assertEqual('XYZxyz', result.record.ticker)
     self.assertEqual(1, result.record.amount)
     self.assertEqual(5, result.record.price)
     
     self.assertEqual('XYZxyz', result.ticker)
     self.assertEqual(0, result.value)
コード例 #17
0
ファイル: summer.py プロジェクト: the9000/pitch-handling-test
def processLine(orders, failures, summary, line):
    outcome = handleMessage(orders, line)
    if outcome.success:
        summary[outcome.ticker] += outcome.value
        if outcome.record:  # trades return no records
            order_id = outcome.record.order_id
            if outcome.record.amount:
                orders[order_id] = outcome.record
            else:
                del orders[order_id]  # the order was completly executed / closed.
    else:
        failures.append(outcome)
    return orders, failures, summary
コード例 #18
0
ファイル: summer.py プロジェクト: the9000/pitch-handling-test
def processLine(orders, failures, summary, line):
    outcome = handleMessage(orders, line)
    if outcome.success:
        summary[outcome.ticker] += outcome.value
        if outcome.record:  # trades return no records
            order_id = outcome.record.order_id
            if outcome.record.amount:
                orders[order_id] = outcome.record
            else:
                del orders[
                    order_id]  # the order was completly executed / closed.
    else:
        failures.append(outcome)
    return orders, failures, summary