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'
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
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
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
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)
def setUp(self): self.tb = TradeBook(name='MyTradeBook')
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