diff --git a/0001-Create-Patch-file.patch b/0001-Create-Patch-file.patch new file mode 100644 index 0000000..e69de29 diff --git a/client3.py b/client3.py index f1771c3..50056a9 100644 --- a/client3.py +++ b/client3.py @@ -35,25 +35,29 @@ def getDataPoint(quote): stock = quote['stock'] bid_price = float(quote['top_bid']['price']) ask_price = float(quote['top_ask']['price']) - price = bid_price + price = (bid_price+ask_price)/2 return stock, bid_price, ask_price, price def getRatio(price_a, price_b): """ Get ratio of price_a and price_b """ """ ------------- Update this function ------------- """ """ Also create some unit tests for this function in client_test.py """ - return 1 + if(price_b == 0): + return + return price_a/price_b # Main if __name__ == "__main__": # Query the price once every N seconds. - for _ in iter(range(N)): + for _ in range(N): quotes = json.loads(urllib.request.urlopen(QUERY.format(random.random())).read()) """ ----------- Update to get the ratio --------------- """ + prices = {} for quote in quotes: stock, bid_price, ask_price, price = getDataPoint(quote) + prices[stock] = price print ("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price)) - print ("Ratio %s" % getRatio(price, price)) + print ("Ratio %s" % getRatio(prices['ABC'], prices['ABC'])) diff --git a/client_test.py b/client_test.py index af2bf26..3711d1e 100644 --- a/client_test.py +++ b/client_test.py @@ -1,5 +1,5 @@ import unittest -from client3 import getDataPoint +from client3 import * class ClientTest(unittest.TestCase): def test_getDataPoint_calculatePrice(self): @@ -8,6 +8,9 @@ def test_getDataPoint_calculatePrice(self): {'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 = [ @@ -15,10 +18,36 @@ def test_getDataPoint_calculatePriceBidGreaterThanAsk(self): {'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 ------------ """ """ ------------ Add more unit tests ------------ """ + def test_getRatio_priceBZero(self): + price_a = 121.24 + price_b = 0 + self.assertIsNone(getRatio(price_a, price_b)) + + def test_getRatio_priceAZero(self): + price_a = 0 + price_b = 126.70 + self.assertEqual(getRatio(price_a, price_b), 0) + + def test_getRatio_greaterThan1(self): + price_a = 6342.12 + price_b = 1233.40 + self.assertGreater(getRatio(price_a, price_b), 1) + + def test_getRatio_LessThan1(self): + price_a = 1665.39 + price_b = 3569.48 + self.assertLess(getRatio(price_a, price_b), 1) + def test_getRatio_exactlyOne(self): + price_a = 2356.48 + price_b = 2356.48 + self.assertEqual(getRatio(price_a, price_b), 1) if __name__ == '__main__':