Beispiel #1
0
    def test_convert_from_alien_to_roman(self):
        tradebook = TradeBook()
        value_in_alien = "glob prok"
        tradebook.conversion_table_alien_to_roman = {'glob': 'I', 'prok': 'V'}
        value_in_roman = tradebook.convert_from_alien_to_roman(value_in_alien)

        assert value_in_roman == 'IV'
Beispiel #2
0
    def test_convert_from_roman_to_arabic_MDCL(self):
        tradebook = TradeBook()
        value_in_roman = 'MDCL'
        value_in_arabic = tradebook.convert_from_roman_to_arabic(
            value_in_roman)

        assert value_in_arabic == 1650
Beispiel #3
0
    def test_convert_from_roman_to_arabic_XXXIX(self):
        tradebook = TradeBook()
        value_in_roman = 'XXXIX'
        value_in_arabic = tradebook.convert_from_roman_to_arabic(
            value_in_roman)

        assert value_in_arabic == 39
Beispiel #4
0
    def test_convert_from_roman_to_arabic_MCMXLIV(self):
        tradebook = TradeBook()
        value_in_roman = 'MCMXLIV'
        value_in_arabic = tradebook.convert_from_roman_to_arabic(
            value_in_roman)

        assert value_in_arabic == 1944
Beispiel #5
0
class TestTradeBook(unittest.TestCase):
    def setUp(self):
        self.tb = TradeBook(name='MyTradeBook')

    def test_add_trade(self):
        self.tb.add_trade(**trade)
        self.assertEqual(self.tb._trades[0]['id'], 1)
        self.assertEqual(self.tb._trades[0]['symbol'], 'AAPL')
        self.assertEqual(self.tb._trades[0]['qty'], 10)
        self.assertEqual(self.tb._trades[0]['price'], 150)
        self.assertEqual(self.tb._trades[0]['order_type'], 'B')
        self.assertEqual(self.tb._trades[0]['timestamp'], '2018-01-01')

    def test_add_trades(self):
        trades_array = []
        Trade = trade.copy()
        trades_array.append(Trade)

        Trade = trade.copy()
        Trade.update({'qty': 15, 'price': 145})
        trades_array.append(Trade)

        Trade = trade.copy()
        Trade.update({
            'qty': 25,
            'order_type': 'S',
            'price': 162,
            'timestamp': '2018-01-10'
        })
        trades_array.append(Trade)
        self.tb.add_trades(trades_array)
        self.assertEqual(self.tb.trades[2]['id'], 3)
        self.assertEqual(self.tb.trades[2]['qty'], -25)
        self.assertEqual(self.tb.trades[2]['timestamp'], '2018-01-10')
        self.assertEqual(self.tb.get_trade_count(), 3)

    def test_count_trades(self):
        [self.tb.add_trade(**trade) for i in range(1000)]
        self.assertEqual(self.tb.get_trade_count(), 1000)
Beispiel #6
0
 def setUp(self):
     self.tb = TradeBook(name='MyTradeBook')
Beispiel #7
0
    def test_tradebook_initialization(self):
        tradebook = TradeBook()

        assert tradebook.traded_items.has_key('Silver')
        assert type(tradebook.traded_items['Silver']) is dict
        assert tradebook.traded_items['Silver']['value_in_alien'] == None
import re
from tradebook import TradeBook

tradebook = TradeBook()


def get_array_of_lines_from_file(file_path):
    with open(file_path, 'r') as file:
        return file.readlines()


def parse_statement_or_query(line):

    pattern1 = "(?P<alien_word>[a-zA-Z]+) is (?P<roman_value>[I|V|X|L|C|D|M])"
    pattern2 = "(?P<value_in_alien>[a-z]+ [a-z]+) (?P<item>[a-zA-Z]+) is (?P<number_of_credits>[0-9]+) Credits"
    pattern3 = "how much is (?P<alien_amount>([a-z]+ )+) ?"
    pattern4 = "how many Credits is (?P<alien_amount>([a-z]+ )+)(?P<item>[a-zA-Z]+) ?"

    if re.match(pattern1, line):
        entry = re.match(pattern1, line)
        alien_word = entry.group('alien_word')
        roman_value = entry.group('roman_value')
        tradebook.conversion_table_alien_to_roman[alien_word] = roman_value

    elif re.match(pattern2, line):
        entry = re.match(pattern2, line)
        value_in_alien = entry.group('value_in_alien')
        item = entry.group('item')
        number_of_credits = entry.group('number_of_credits')
        tradebook.traded_items[item]['value_in_alien'] = value_in_alien
        tradebook.traded_items[item]['number_of_credits'] = number_of_credits