1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Tests for date and time precision helpers."""
from __future__ import unicode_literals
import decimal
import unittest
from dfdatetime import definitions
from dfdatetime import precisions
class DateTimePrecisionHelperTest(unittest.TestCase):
"""Tests for the date time precision helper interface."""
def testCopyMicrosecondsToFractionOfSecond(self):
"""Tests the CopyMicrosecondsToFractionOfSecond function."""
precision_helper = precisions.DateTimePrecisionHelper
with self.assertRaises(NotImplementedError):
precision_helper.CopyMicrosecondsToFractionOfSecond(0)
def testCopyToDateTimeString(self):
"""Tests the CopyToDateTimeString function."""
precision_helper = precisions.DateTimePrecisionHelper
with self.assertRaises(NotImplementedError):
precision_helper.CopyToDateTimeString((2018, 1, 2, 19, 45, 12), 0.5)
class SecondsPrecisionHelperTest(unittest.TestCase):
"""Tests for the seconds precision helper."""
def testCopyMicrosecondsToFractionOfSecond(self):
"""Tests the CopyMicrosecondsToFractionOfSecond function."""
precision_helper = precisions.SecondsPrecisionHelper
fraction_of_second = precision_helper.CopyMicrosecondsToFractionOfSecond(
123456)
self.assertEqual(fraction_of_second, 0.0)
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(-1)
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(1000000)
def testCopyToDateTimeString(self):
"""Tests the CopyToDateTimeString function."""
precision_helper = precisions.SecondsPrecisionHelper
date_time_string = precision_helper.CopyToDateTimeString(
(2018, 1, 2, 19, 45, 12), 0.123456)
self.assertEqual(date_time_string, '2018-01-02 19:45:12')
with self.assertRaises(ValueError):
precision_helper.CopyToDateTimeString((2018, 1, 2, 19, 45, 12), 4.123456)
class MillisecondsPrecisionHelperTest(unittest.TestCase):
"""Tests for the milliseconds precision helper."""
def testCopyMicrosecondsToFractionOfSecond(self):
"""Tests the CopyMicrosecondsToFractionOfSecond function."""
precision_helper = precisions.MillisecondsPrecisionHelper
fraction_of_second = precision_helper.CopyMicrosecondsToFractionOfSecond(
123456)
self.assertEqual(fraction_of_second, decimal.Decimal('0.123'))
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(-1)
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(1000000)
def testCopyToDateTimeString(self):
"""Tests the CopyToDateTimeString function."""
precision_helper = precisions.MillisecondsPrecisionHelper
date_time_string = precision_helper.CopyToDateTimeString(
(2018, 1, 2, 19, 45, 12), 0.123456)
self.assertEqual(date_time_string, '2018-01-02 19:45:12.123')
with self.assertRaises(ValueError):
precision_helper.CopyToDateTimeString((2018, 1, 2, 19, 45, 12), 4.123456)
class MicrosecondsPrecisionHelperTest(unittest.TestCase):
"""Tests for the milliseconds precision helper."""
def testCopyMicrosecondsToFractionOfSecond(self):
"""Tests the CopyMicrosecondsToFractionOfSecond function."""
precision_helper = precisions.MicrosecondsPrecisionHelper
fraction_of_second = precision_helper.CopyMicrosecondsToFractionOfSecond(
123456)
self.assertEqual(fraction_of_second, decimal.Decimal('0.123456'))
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(-1)
with self.assertRaises(ValueError):
precision_helper.CopyMicrosecondsToFractionOfSecond(1000000)
def testCopyToDateTimeString(self):
"""Tests the CopyToDateTimeString function."""
precision_helper = precisions.MicrosecondsPrecisionHelper
date_time_string = precision_helper.CopyToDateTimeString(
(2018, 1, 2, 19, 45, 12), 0.123456)
self.assertEqual(date_time_string, '2018-01-02 19:45:12.123456')
with self.assertRaises(ValueError):
precision_helper.CopyToDateTimeString((2018, 1, 2, 19, 45, 12), 4.123456)
class PrecisionHelperFactoryTest(unittest.TestCase):
"""Tests for the date time precision helper factory."""
def testCreatePrecisionHelper(self):
"""Tests the CreatePrecisionHelper function."""
precision_helper = precisions.PrecisionHelperFactory.CreatePrecisionHelper(
definitions.PRECISION_1_MICROSECOND)
self.assertIsNotNone(precision_helper)
with self.assertRaises(ValueError):
precisions.PrecisionHelperFactory.CreatePrecisionHelper('bogus')
if __name__ == '__main__':
unittest.main()
|