def testIsAfterDateBefore(self):
     zhArrowDateTimeObjRef = DateTimeUtil.dateTimeStringToArrowLocalDate(
         "2017/09/30 02:00:00", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss")
     zhArrowDateTimeObjOneSecBefore = DateTimeUtil.dateTimeStringToArrowLocalDate(
         "2017/09/30 01:59:59", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss")
     self.assertFalse(
         DateTimeUtil.isAfter(zhArrowDateTimeObjOneSecBefore,
                              zhArrowDateTimeObjRef))
 def testIsAfterOneSecond(self):
     zhArrowDateTimeObjRef = DateTimeUtil.dateTimeStringToArrowLocalDate(
         "2017/09/30 02:00:00", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss")
     zhArrowDateTimeObjOneSecAfter = DateTimeUtil.dateTimeStringToArrowLocalDate(
         "2017/09/30 02:00:01", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss")
     self.assertTrue(
         DateTimeUtil.isAfter(zhArrowDateTimeObjOneSecAfter,
                              zhArrowDateTimeObjRef))
Esempio n. 3
0
    def testSummerDateTimeStringToArrowLocalDate(self):
        expTimeStamp = 1506787315

        dateStr = '2017/09/30 21:31:55'
        arrowDateObj = DateTimeUtil.dateTimeStringToArrowLocalDate(dateStr, 'Asia/Calcutta', US_DATE_TIME_FORMAT_ARROW)
        self.assertEqual(expTimeStamp, arrowDateObj.timestamp)

        dateStr = '2017/09/30 18:01:55'
        arrowDateObj = DateTimeUtil.dateTimeStringToArrowLocalDate(dateStr, 'Europe/Zurich', US_DATE_TIME_FORMAT_ARROW)
        self.assertEqual(expTimeStamp, arrowDateObj.timestamp)
Esempio n. 4
0
    def testShiftTimeStampToEndOfDay_alt(self):
        utcArrowDateTimeObj_begOfDay = DateTimeUtil.dateTimeStringToArrowLocalDate("2017/09/30 00:00:00", 'UTC',
                                                                                   "YYYY/MM/DD HH:mm:ss")
        timeStampBegDay = utcArrowDateTimeObj_begOfDay.timestamp
        utcArrowDateTimeObj_endOfDay = DateTimeUtil.dateTimeStringToArrowLocalDate("2017/09/30 23:59:59", 'UTC',
                                                                                   "YYYY/MM/DD HH:mm:ss")
        timeStampEndDay = utcArrowDateTimeObj_endOfDay.timestamp
        timeStampShifted = DateTimeUtil.shiftTimeStampToEndOfDay(timeStampBegDay)

        self.assertEqual(timeStampShifted, timeStampEndDay)
    def testWinterDateTimeStringToArrowLocalDate(self):
        expTimeStamp = 1512061315

        dateStr = '2017/11/30 22:31:55'
        arrowDateObj = DateTimeUtil.dateTimeStringToArrowLocalDate(
            dateStr, 'Asia/Calcutta', US_DATE_TIME_FORMAT_ARROW)
        self.assertEqual(expTimeStamp, arrowDateObj.timestamp())

        dateStr = '2017/11/30 18:01:55'
        arrowDateObj = DateTimeUtil.dateTimeStringToArrowLocalDate(
            dateStr, 'Europe/Zurich', US_DATE_TIME_FORMAT_ARROW)
        self.assertEqual(expTimeStamp, arrowDateObj.timestamp())
Esempio n. 6
0
    def testGetFormattedDateTimeComponents(self):
        zhArrowDateTimeObjRef = DateTimeUtil.dateTimeStringToArrowLocalDate("2017/09/30 02:00:00", 'Europe/Zurich',
                                                                            "YYYY/MM/DD HH:mm:ss")

        dateTimeComponentSymbolList, separatorsList, dateTimeComponentValueList = DateTimeUtil.getFormattedDateTimeComponents(zhArrowDateTimeObjRef, 'DD/MM/YY HH:mm')

        self.assertEqual(['DD', 'MM', 'YY', 'HH', 'mm'], dateTimeComponentSymbolList)
        self.assertEqual(['/', ':'], separatorsList)
        self.assertEqual(['30', '09', '17', '02', '00'], dateTimeComponentValueList)

        dateTimeComponentSymbolList, separatorsList, dateTimeComponentValueList = DateTimeUtil.getFormattedDateTimeComponents(zhArrowDateTimeObjRef, 'YYYY.MM.DD HH.mm')

        self.assertEqual(['YYYY', 'MM', 'DD', 'HH', 'mm'], dateTimeComponentSymbolList)
        self.assertEqual(['\.', '\.'], separatorsList)
        self.assertEqual(['2017', '09', '30', '02', '00'], dateTimeComponentValueList)

        dateTimeComponentSymbolList, separatorsList, dateTimeComponentValueList = DateTimeUtil.getFormattedDateTimeComponents(zhArrowDateTimeObjRef, 'YYYY.MM.DD HH-mm')

        self.assertEqual(['YYYY', 'MM', 'DD', 'HH', 'mm'], dateTimeComponentSymbolList)
        self.assertEqual(['\.', '-'], separatorsList)
        self.assertEqual(['2017', '09', '30', '02', '00'], dateTimeComponentValueList)

        dateTimeComponentSymbolList, separatorsList, dateTimeComponentValueList = DateTimeUtil.getFormattedDateTimeComponents(zhArrowDateTimeObjRef, 'MM-DD-YYYY HH.mm')

        self.assertEqual(['MM', 'DD', 'YYYY', 'HH', 'mm'], dateTimeComponentSymbolList)
        self.assertEqual(['-', '\.'], separatorsList)
        self.assertEqual(['09', '30', '2017', '02', '00'], dateTimeComponentValueList)
Esempio n. 7
0
	def computeCryptoFiatRate(self,
							  crypto,
							  fiat,
							  dateStr=None):
		'''

		:raise UnsupportedCryptoFiatPairError in case the crypto fiat exchange
		 	   CSV file does not have the necessary information to compute the
		 	   crypto/fiat pair rate.
		:raise AfterNowPriceRequestDateError in case the passed dateStr is after
			   now.

		@param crypto:
		@param fiat:
		@param dateStr: if not None, means that an historical rate must be
						obtained. Otherwise, a current rate is returned.

		:return crypto/fiat pair current rate
		'''
		if dateStr is not None:
			nowDateArrow = DateTimeUtil.localNow(LOCAL_TIME_ZONE)
			requestDateArrow = DateTimeUtil.dateTimeStringToArrowLocalDate(dateStr, LOCAL_TIME_ZONE, DATE_FORMAT)
			if DateTimeUtil.isAfter(requestDateArrow, nowDateArrow):
				raise AfterNowPriceRequestDateError(dateStr)

		intermediateExchangeRateRequestLst = self._getIntermediateExchangeRateRequests(crypto, fiat)

		rateRequestNumber = len(intermediateExchangeRateRequestLst)

		if rateRequestNumber == 1:
			exchange = intermediateExchangeRateRequestLst[0][2]
			if exchange == '1':
				# the case if the crypto/fiat pair is a stablecoin/ coin fiat pair,
				# like USDC/USD !
				return 1
			else:
				resultData = self._getCurrentOrHistoRate(crypto, dateStr, exchange, fiat)

				if not self._checkIfProblem(resultData):
					return resultData.getValue(resultData.RESULT_KEY_PRICE)
		elif rateRequestNumber == 2:
				crypto = intermediateExchangeRateRequestLst[0][0]
				unit = intermediateExchangeRateRequestLst[0][1]
				exchange = intermediateExchangeRateRequestLst[0][2]
				if exchange == '1':
					resultData = ResultData()
					resultData.setValue(resultData.RESULT_KEY_PRICE, 1)
				else:
					resultData = self._getCurrentOrHistoRate(crypto, dateStr, exchange, unit)
				if not self._checkIfProblem(resultData):
					firstRate = resultData.getValue(resultData.RESULT_KEY_PRICE)
					crypto = intermediateExchangeRateRequestLst[1][0]
					fiat = intermediateExchangeRateRequestLst[1][1]
					exchange = intermediateExchangeRateRequestLst[1][2]
					resultData = self._getCurrentOrHistoRate(crypto, dateStr, exchange, fiat)
					if not self._checkIfProblem(resultData):
						secondRate = resultData.getValue(resultData.RESULT_KEY_PRICE)
						return firstRate * secondRate

		raise UnsupportedCryptoFiatPairError(crypto, fiat, self.cryptoFiatCsvFilePathName)
 def testDateTimeStringToArrowLocalDate(self):
     zhArrowDateTimeObj_begOfDay = DateTimeUtil.dateTimeStringToArrowLocalDate(
         "2017/09/30 02:00:00", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss")
     self.assertEqual(1506729600, zhArrowDateTimeObj_begOfDay.timestamp())
     self.assertEqual(
         "2017/09/30 02:00:00 +02:00",
         zhArrowDateTimeObj_begOfDay.format(US_DATE_TIME_FORMAT_TZ_ARROW))
Esempio n. 9
0
    def testConvertToTimeZoneWinter(self):
        locDateStr = '2017/11/30 09:00:00'
        datetimeObjLA = DateTimeUtil.dateTimeStringToArrowLocalDate(locDateStr, 'US/Pacific', US_DATE_TIME_FORMAT_ARROW)
        self.assertEqual('2017/11/30 09:00:00 -08:00', datetimeObjLA.format(US_DATE_TIME_FORMAT_TZ_ARROW))

        datetimeObjZH = DateTimeUtil.convertToTimeZone(datetimeObjLA, 'Europe/Zurich')
        self.assertEqual('2017/11/30 18:00:00 +01:00', datetimeObjZH.format(US_DATE_TIME_FORMAT_TZ_ARROW))

        datetimeObjIN = DateTimeUtil.convertToTimeZone(datetimeObjLA, 'Asia/Calcutta')
        self.assertEqual('2017/11/30 22:30:00 +05:30', datetimeObjIN.format(US_DATE_TIME_FORMAT_TZ_ARROW))
Esempio n. 10
0
 def test_getHistoDayPriceAtUTCTimeStampMidOfDay(self):
     crypto = 'BTC'
     fiat = 'USD'
     exchange = 'CCCAGG'
     utcArrowDateTimeObj_midOfDay = DateTimeUtil.dateTimeStringToArrowLocalDate("2017/09/30 12:59:59", 'UTC',
                                                                                "YYYY/MM/DD HH:mm:ss")
     resultData = ResultData()
     resultData = self.priceRequester._getHistoDayPriceAtUTCTimeStamp(crypto,
                                                                       fiat,
                                                                       utcArrowDateTimeObj_midOfDay.timestamp,
                                                                       exchange,
                                                                       resultData)
     self.assertEqual(1506729600, resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP))
     priceArrowUTCDateTime = DateTimeUtil.timeStampToArrowLocalDate(resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP),
                                                                    'UTC')
     self.assertEqual(resultData.getValue(resultData.RESULT_KEY_PRICE_TYPE), resultData.PRICE_TYPE_HISTO_DAY)
     self.assertEqual('30/09/17', priceArrowUTCDateTime.format(self.configMgr.dateOnlyFormat))
     self.assertEqual(4360.62, resultData.getValue(resultData.RESULT_KEY_PRICE))