Esempio n. 1
0
 def test_deserialize_closed_range(self):
     serialized = (int8_pack(1) + int64_pack(self.timestamp) +
                   int8_pack(2) + int64_pack(self.timestamp) + int8_pack(6))
     self.assertEqual(
         DateRangeType.deserialize(serialized, 5),
         util.DateRange(lower_bound=util.DateRangeBound(
             value=datetime.datetime(2017, 2, 1, 0, 0), precision='DAY'),
                        upper_bound=util.DateRangeBound(
                            value=datetime.datetime(2017, 2, 1, 15, 42, 12,
                                                    404000),
                            precision='MILLISECOND')))
Esempio n. 2
0
 def test_serialize_closed_range(self):
     serialized = (int8_pack(1) + int64_pack(self.timestamp) +
                   int8_pack(5) + int64_pack(self.timestamp) + int8_pack(0))
     deserialized = DateRangeType.deserialize(serialized, 5)
     self.assertEqual(
         deserialized,
         util.DateRange(lower_bound=util.DateRangeBound(
             value=datetime.datetime(2017, 2, 1, 15, 42, 12),
             precision='SECOND'),
                        upper_bound=util.DateRangeBound(
                            value=datetime.datetime(2017, 12, 31),
                            precision='YEAR')))
Esempio n. 3
0
    def test_deserialize_zero_datetime(self):
        """
        Test deserialization where timestamp = 0

        Reproduces PYTHON-729

        @since 2.0.0
        @jira_ticket PYTHON-729
        @expected_result deserialization doesn't raise an error

        @test_category data_types
        """
        DateRangeType.deserialize(
            (int8_pack(1) + int64_pack(0) + int8_pack(0) + int64_pack(0) +
             int8_pack(0)), 5)
Esempio n. 4
0
 def test_deserialize_single_value(self):
     serialized = (int8_pack(0) + int64_pack(self.timestamp) + int8_pack(3))
     self.assertEqual(
         DateRangeType.deserialize(serialized, 5),
         util.DateRange(value=util.DateRangeBound(value=datetime.datetime(
             2017, 2, 1, 15, 42, 12, 404000),
                                                  precision='HOUR')))
Esempio n. 5
0
 def test_serialize_open_low(self):
     serialized = (int8_pack(2) + int64_pack(self.timestamp) + int8_pack(3))
     deserialized = DateRangeType.deserialize(serialized, 5)
     self.assertEqual(
         deserialized,
         util.DateRange(lower_bound=util.DateRangeBound(
             value=datetime.datetime(2017, 2, 1, 15), precision='HOUR'),
                        upper_bound=util.OPEN_BOUND))
Esempio n. 6
0
 def test_serialize_single_value(self):
     serialized = (int8_pack(0) + int64_pack(self.timestamp) + int8_pack(5))
     deserialized = DateRangeType.deserialize(serialized, 5)
     self.assertEqual(
         deserialized,
         util.DateRange(value=util.DateRangeBound(value=datetime.datetime(
             2017, 2, 1, 15, 42, 12),
                                                  precision='SECOND')))
Esempio n. 7
0
 def test_deserialize_open_low(self):
     serialized = (int8_pack(3) + int64_pack(self.timestamp) + int8_pack(4))
     deserialized = DateRangeType.deserialize(serialized, 5)
     self.assertEqual(
         deserialized,
         util.DateRange(lower_bound=util.OPEN_BOUND,
                        upper_bound=util.DateRangeBound(
                            value=datetime.datetime(2017, 2, 1, 15, 42, 20,
                                                    1000),
                            precision='MINUTE')))
Esempio n. 8
0
    def test_datetype(self):
        now_time_seconds = time.time()
        now_datetime = datetime.datetime.utcfromtimestamp(now_time_seconds)

        # Cassandra timestamps in millis
        now_timestamp = now_time_seconds * 1e3

        # same results serialized
        self.assertEqual(DateType.serialize(now_datetime, 0),
                         DateType.serialize(now_timestamp, 0))

        # deserialize
        # epoc
        expected = 0
        self.assertEqual(DateType.deserialize(int64_pack(1000 * expected), 0),
                         datetime.datetime.utcfromtimestamp(expected))

        # beyond 32b
        expected = 2**33
        self.assertEqual(DateType.deserialize(int64_pack(1000 * expected), 0),
                         datetime.datetime(2242, 3, 16, 12, 56, 32))

        # less than epoc (PYTHON-119)
        expected = -770172256
        self.assertEqual(DateType.deserialize(int64_pack(1000 * expected), 0),
                         datetime.datetime(1945, 8, 5, 23, 15, 44))

        # work around rounding difference among Python versions (PYTHON-230)
        expected = 1424817268.274
        self.assertEqual(
            DateType.deserialize(int64_pack(int(1000 * expected)), 0),
            datetime.datetime(2015, 2, 24, 22, 34, 28, 274000))

        # Large date overflow (PYTHON-452)
        expected = 2177403010.123
        self.assertEqual(
            DateType.deserialize(int64_pack(int(1000 * expected)), 0),
            datetime.datetime(2038, 12, 31, 10, 10, 10, 123000))