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)
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)
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)
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)
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')
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)