Example #1
0
    def testGetNormalizedTimestamp(self):
        """Test the _GetNormalizedTimestamp function."""
        golang_timestamp = bytes.fromhex('010000000000000000000000000000')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        normalized_timestamp = golang_time_object._GetNormalizedTimestamp()
        self.assertIsNone(normalized_timestamp)

        golang_timestamp = struct.pack('>Bqih', 1, 63772480949, 711098348, 0)
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        normalized_timestamp = golang_time_object._GetNormalizedTimestamp()
        self.assertEqual(normalized_timestamp,
                         decimal.Decimal('1636884149.711098348'))

        golang_timestamp = bytes.fromhex('010000000e7791f70000000000ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        normalized_timestamp = golang_time_object._GetNormalizedTimestamp()
        self.assertEqual(normalized_timestamp, decimal.Decimal('0'))

        golang_timestamp = bytes.fromhex('010000000e7791f60000000000ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        normalized_timestamp = golang_time_object._GetNormalizedTimestamp()
        self.assertIsNone(normalized_timestamp)
Example #2
0
    def testProperties(self):
        """Tests the Golang time.Time timestamp properties."""
        golang_timestamp = struct.pack('>Bqih', 1, 0, 0, -1)
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)
        self.assertEqual(golang_time_object._number_of_seconds, 0)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object.is_local_time, False)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_timestamp = struct.pack(
            '>Bqih', 1, golang_time.GolangTime._GOLANG_TO_POSIX_BASE, 0, 1)
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)
        self.assertEqual(golang_time_object._number_of_seconds,
                         golang_time.GolangTime._GOLANG_TO_POSIX_BASE)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object.is_local_time, True)
        self.assertEqual(golang_time_object._time_zone_offset, 1)

        golang_timestamp = bytes.fromhex('010000000e7791f70000000000ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)
        self.assertEqual(golang_time_object._number_of_seconds,
                         golang_time.GolangTime._GOLANG_TO_POSIX_BASE)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object.is_local_time, False)
        self.assertEqual(golang_time_object._time_zone_offset, 0)
Example #3
0
    def testGetNumberOfSeconds(self):
        """Test the _GetNumberOfSeconds function."""
        golang_time_object = golang_time.GolangTime()

        golang_timestamp = bytes.fromhex('010000000000000002000000030004')
        number_of_seconds, nanoseconds, time_zone_offset = (
            golang_time_object._GetNumberOfSeconds(golang_timestamp))
        self.assertEqual(number_of_seconds, 2)
        self.assertEqual(nanoseconds, 3)
        self.assertEqual(time_zone_offset, 4)

        golang_timestamp = bytes.fromhex('02000000000000000500000006ffff08')
        number_of_seconds, nanoseconds, time_zone_offset = (
            golang_time_object._GetNumberOfSeconds(golang_timestamp))
        self.assertEqual(number_of_seconds, 5)
        self.assertEqual(nanoseconds, 6)
        self.assertEqual(time_zone_offset, 0)

        with self.assertRaises(ValueError):
            golang_timestamp = bytes.fromhex('0100')
            golang_time_object._GetNumberOfSeconds(golang_timestamp)

        with self.assertRaises(ValueError):
            golang_timestamp = bytes.fromhex('020000000000000000000000000000')
            golang_time_object._GetNumberOfSeconds(golang_timestamp)

        with self.assertRaises(ValueError):
            golang_timestamp = bytes.fromhex('ff0000000000000000000000000000')
            golang_time_object._GetNumberOfSeconds(golang_timestamp)
Example #4
0
    def testCopyFromDateTimeString(self):
        """Tests the CopyFromDateTimeString function."""
        golang_time_object = golang_time.GolangTime()

        golang_time_object.CopyFromDateTimeString('0001-01-01')
        self.assertEqual(golang_time_object._number_of_seconds, 0)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_time_object.CopyFromDateTimeString('0001-01-01 00:01:00')
        self.assertEqual(golang_time_object._number_of_seconds, 60)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_time_object.CopyFromDateTimeString('0001-01-01 00:00:00.000001')
        self.assertEqual(golang_time_object._number_of_seconds, 0)
        self.assertEqual(golang_time_object._nanoseconds, 1000)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_time_object.CopyFromDateTimeString('2000-01-01')
        self.assertEqual(golang_time_object._number_of_seconds, 63082281600)
        self.assertEqual(golang_time_object._nanoseconds, 0)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_time_object.CopyFromDateTimeString('2000-01-01 12:23:45.567890')
        self.assertEqual(golang_time_object._number_of_seconds, 63082326225)
        self.assertEqual(golang_time_object._nanoseconds, 567890000)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        golang_time_object.CopyFromDateTimeString(
            '2000-01-01 12:23:45.567890+01:00')
        self.assertEqual(golang_time_object._number_of_seconds, 63082326225)
        self.assertEqual(golang_time_object._nanoseconds, 567890000)
        self.assertEqual(golang_time_object._time_zone_offset, 60)
Example #5
0
    def testCopyToDateTimeString(self):
        """Test the CopyToDateTimeString function."""
        golang_timestamp = bytes.fromhex('010000000eafffe8d121d95050ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        self.assertEqual(golang_time_object._number_of_seconds, 63082326225)
        self.assertEqual(golang_time_object._nanoseconds, 567890000)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        date_time_string = golang_time_object.CopyToDateTimeString()
        self.assertEqual(date_time_string, '2000-01-01 12:23:45.567890')

        golang_timestamp = bytes.fromhex('010000000eafffe8d10000ddd5ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        self.assertEqual(golang_time_object._number_of_seconds, 63082326225)
        self.assertEqual(golang_time_object._nanoseconds, 56789)
        self.assertEqual(golang_time_object._time_zone_offset, 0)

        date_time_string = golang_time_object.CopyToDateTimeString()
        self.assertEqual(date_time_string, '2000-01-01 12:23:45.000056')
Example #6
0
    def testConvertDateTimeValuesToJSON(self):
        """Test ConvertDateTimeValuesToJSON function."""
        posix_time_object = posix_time.PosixTime(timestamp=1281643591)

        expected_json_dict = {
            '__class_name__': 'PosixTime',
            '__type__': 'DateTimeValues',
            'timestamp': 1281643591
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            posix_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        posix_time_object.is_local_time = True

        expected_json_dict = {
            '__class_name__': 'PosixTime',
            '__type__': 'DateTimeValues',
            'is_local_time': True,
            'timestamp': 1281643591
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            posix_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        never_time_object = semantic_time.Never()

        expected_json_dict = {
            '__class_name__': 'Never',
            '__type__': 'DateTimeValues',
            'string': 'Never'
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            never_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        fat_date_time_object = fat_date_time.FATDateTime(
            fat_date_time=0xa8d03d0c)

        expected_json_dict = {
            '__class_name__': 'FATDateTime',
            '__type__': 'DateTimeValues',
            'fat_date_time': 2832219404
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            fat_date_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        golang_timestamp = bytes.fromhex('01000000000000000200000003ffff')
        golang_time_object = golang_time.GolangTime(
            golang_timestamp=golang_timestamp)

        expected_json_dict = {
            '__class_name__':
            'GolangTime',
            '__type__':
            'DateTimeValues',
            'golang_timestamp':
            (b'\x01\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\xff\xff'),
            'time_zone_offset':
            0
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            golang_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        rfc2579_date_time_object = rfc2579_date_time.RFC2579DateTime(
            rfc2579_date_time_tuple=(2010, 8, 12, 20, 6, 31, 6, '+', 2, 0))

        expected_json_dict = {
            '__class_name__': 'RFC2579DateTime',
            '__type__': 'DateTimeValues',
            'rfc2579_date_time_tuple': (2010, 8, 12, 20, 6, 31, 6),
            'time_zone_offset': 120
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            rfc2579_date_time_object)
        self.assertEqual(json_dict, expected_json_dict)

        time_elements_object = time_elements.TimeElements(
            time_elements_tuple=(2010, 8, 12, 20, 6, 31))

        expected_json_dict = {
            '__class_name__': 'TimeElements',
            '__type__': 'DateTimeValues',
            'time_elements_tuple': (2010, 8, 12, 20, 6, 31)
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            time_elements_object)
        self.assertEqual(json_dict, expected_json_dict)

        time_elements_object = time_elements.TimeElementsInMilliseconds(
            time_elements_tuple=(2010, 8, 12, 20, 6, 31, 546))

        expected_json_dict = {
            '__class_name__': 'TimeElementsInMilliseconds',
            '__type__': 'DateTimeValues',
            'time_elements_tuple': (2010, 8, 12, 20, 6, 31, 546)
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            time_elements_object)
        self.assertEqual(json_dict, expected_json_dict)

        time_elements_object = time_elements.TimeElementsInMicroseconds(
            time_elements_tuple=(2010, 8, 12, 20, 6, 31, 429876))

        expected_json_dict = {
            '__class_name__': 'TimeElementsInMicroseconds',
            '__type__': 'DateTimeValues',
            'time_elements_tuple': (2010, 8, 12, 20, 6, 31, 429876)
        }

        json_dict = serializer.Serializer.ConvertDateTimeValuesToJSON(
            time_elements_object)
        self.assertEqual(json_dict, expected_json_dict)