def test_getRatio_edgeCases(self): quote1 = { 'top_ask': { 'price': 0, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' } self.assertIsNone( getRatio(quote1['top_bid']['price'], quote1['top_ask']['price'])) quote2 = { 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' } self.assertEqual( getRatio(quote2['top_bid']['price'], quote2['top_ask']['price']), 0)
def test_div_zero_values(self): quotes = [{ 'top_ask': { 'price': 10.5, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 10.4, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 0, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] # ------------ Add the assertion below ------------ self.assertEqual( getRatio(getDataPoint(quotes[0])[-1], getDataPoint(quotes[1])[-1]), 0)
def test_getDataPoint_calculatePriceBidGreaterThanAsk(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] prices = {} for quote in quotes: stock, bid_price, ask_price, price = getDataPoint(quote) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), prices['ABC'] / prices['DEF']) #self.assertEqual(getRatio((quote['top_ask']['price']['ABC']+quote['top_bid']['price'])/2,quote['price']), (quote['stock'],quote['top_bid']['price'],quote['top_ask']['price'],(quote['top_bid']['price']+quote['top_ask']['price'])/2)) """ ------------ Add the assertion below ------------ """
def test_getRatio_calculateRatio(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 122.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 135.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] a = quotes[0]['top_bid']['price'] b = quotes[1]['top_bid']['price'] self.assertEqual(getRatio(a, b), a / b)
def test_getRatio_calculateRatio(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] stock1, bid_price1, ask_price1, price1 = getDataPoint(quotes[0]) stock2, bid_price2, ask_price2, price2 = getDataPoint(quotes[1]) self.assertEqual(getRatio(price1, price2), 1.008891671884784)
def test_getRatio_calculateRatio(self): quotes = [{ 'price ABC': 121.2, 'price DEF': 121.68 }, { 'price ABC': 0, 'price DEF': 121.68 }, { 'price ABC': 121.2, 'price DEF': 0 }] """ ------------ Add the assertion below ------------ """ for quote in quotes: if quote['price DEF'] == 0: return "N/A" self.assertEqual(getRatio(quote['price ABC'], quote['price DEF']), quote['price ABC'] / quote['price DEF'])
def test_getRatio(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }, { 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }] for quote in quotes: self.assertEqual( getRatio(quote['top_bid']['price'], quote['top_ask']['price']), quote['top_bid']['price'] / quote['top_ask']['price'])
def test_getRatio_computeRatioPriceAZero(self): # fake data prices = [{ 'A': 0, 'B': 5.00 }, { 'A': 0, 'B': 3.00 }, { 'A': 0, 'B': 7.34 }, { 'A': 0, 'B': 98.75 }, { 'A': 0, 'B': 53.64 }] # assertion to test method for price in prices: self.assertEqual(getRatio(price['A'], price['B']), 0)
def test_getRatio_computeRatioPriceBZero(self): # fake data prices = [{ 'A': 2.00, 'B': 0 }, { 'A': 7.00, 'B': 0 }, { 'A': 9.34, 'B': 0 }, { 'A': 25.76, 'B': 0 }, { 'A': 105.24, 'B': 0 }] # assertion to test method for price in prices: self.assertEqual(getRatio(price['A'], price['B']), None)
class ClientTest(unittest.TestCase): def test_getDataPoint_calculatePrice(self): quotes = [ {'top_ask': {'price': 121.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] """ ------------ Add the assertion below ------------ """ for quote in quotes: self.assertEqual(getDataPoint(quote), (quote['stock'], quote['top_bid']['price'], quote['top_ask']['price'], (quote['top_bid']['price'] + quote['top_ask']['price'])/2)) def test_getDataPoint_calculatePriceBidGreaterThanAsk(self): quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] """ ------------ Add the assertion below ------------ """ for quote in quotes: self.assertEqual(getDataPoint(quote), (quote['stock'], quote['top_bid']['price'], quote['top_ask']['price'], (quote['top_bid']['price'] + quote['top_ask']['price'])/2)) """ ------------ Add more unit tests ------------ """ for price in prices: self.assertEqual(getRatio(price_a, price_b))
def test_getRatio_computeRatio(self): # fake data prices = [{ 'A': 2.00, 'B': 5.00 }, { 'A': 7.00, 'B': 3.00 }, { 'A': 9.34, 'B': 7.34 }, { 'A': 25.76, 'B': 98.75 }, { 'A': 105.24, 'B': 53.64 }] # assertion to test method for price in prices: self.assertEqual(getRatio(price['A'], price['B']), (price['A'] / price['B']))
def test_getRatio_calcuateRatio(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] ratio = ( (quotes[0]['top_bid']['price'] + quotes[0]['top_ask']['price']) / 2 ) / ((quotes[1]['top_bid']['price'] + quotes[1]['top_ask']['price']) / 2) prices = {} for quote in quotes: stock, _, _, price = getDataPoint(quote) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), ratio)
def test_getRatio_LessThan1(self): price_a = 166.39 price_b = 356.48 self.assertLess(getRatio(price_a, price_b), 1)
def test_getRatio_calculatePriceRatioPriceEqualZero(self): price_a = 119 price_b = 0 ratio = None self.assertEqual(getRatio(price_a, price_b), ratio)
def test_getRatio_when_price_a_is_zero(self): price_a = 0 price_b = 5 self.assertEqual(getRatio(price_a, price_b), 0)
def test_getRatio_NumeratorLessThanDenominator(self): price_a = 119.2 price_b = 121.68 self.assertLess(getRatio(price_a, price_b), 1)
def test_getRatio_calculatePriceRatio(self): price_a = 119 price_b = 120 ratio = price_a / price_b self.assertEqual(getRatio(price_a, price_b), ratio)
def test_getRatio_ZeroAsResult(self): price_a = 0 price_b = 121.68 self.assertEqual(getRatio(price_a, price_b), 0)
def test_getRatio_OneAsResult(self): price_a = 121.68 price_b = 121.68 self.assertEqual(getRatio(price_a, price_b), 1)
def test_getRatio_WithNonZeroDenominator(self): price_a = 121.68 price_b = 119.2 self.assertEqual(getRatio(price_a, price_b), (price_a / price_b))
def test_getRatio_WithZeroDenominator(self): price_a = 121.68 price_b = 0 self.assertEqual(getRatio(price_a, price_b), None)
def test_getRatio_priceBZero(self): price_a = 121.2 price_b = 0 self.assertIsNone(getRatio(price_a, price_b))
def test_getRatio_priceAZero(self): price_a = 0 price_b = 121.68 self.assertEqual(getRatio(price_a, price_b), 0)
def test_getRatio_when_price_b_is_zero(self): price_a = 5 price_b = 0 self.assertEqual(getRatio(price_a, price_b), None)
def test_getDataPoint_calculatePriceBidGreaterThanAsk(self): quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] """ ------------ Add the assertion below ------------ """ for quote in quotes: self.assertEqual(getDataPoint(quote), (quote['stock'], quote['top_bid']['price'], quote['top_ask']['price'], (quote['top_ask']['price']+quote['top_bid']['price'])/2)) """ ------------ Add more unit tests ------------ """ def test_getRatio_calculatePriceBidGreaterThanAsk(self): quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] """ ------------ Add more assertion below ------------ """ prices = {} for q in quotes: stock, bid_price, ask_price, price = getDataPoint(q) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), (prices['ABC']/prices['DEF'])) if __name__ == '__main__': unittest.main()
def test_value_ActualResult_Equals_ExpectedResults(self): quotes = [{'price_a': 10.8, 'price_b': 5.7}] for q in quotes: self.assertEqual(getRatio(q['price_a'], q['price_b']), 1.8947368421052633)
def test_getRatio_greaterThan1(self): price_a = 346.48 price_b = 166.39 self.assertGreater(getRatio(price_a, price_b), 1)
def test_Negative_ValueResult(self): quotes = [{'price_a': -10.8, 'price_b': 5.7}] for q in quotes: self.assertEqual(getRatio(q['price_a'], q['price_b']), -1.8947368421052633)
def test_getRatio_checkIfPrice_aORPrice_bEqualZero(self): self.assertEqual(getRatio(0, 1), None) self.assertEqual(getRatio(1, 0), None) self.assertEqual(getRatio(0, 0), None)
def test_getRatio_exactlyOne(self): price_a = 356.48 price_b = 356.48 self.assertEqual(getRatio(price_a, price_b), 1)