1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3"""Tests for the Cocoa time implementation.""" 4 5import decimal 6import unittest 7 8from dfdatetime import cocoa_time 9 10 11class CocoaTimeEpochTest(unittest.TestCase): 12 """Tests for the Cocoa time epoch.""" 13 14 def testInitialize(self): 15 """Tests the __init__ function.""" 16 cocoa_time_epoch = cocoa_time.CocoaTimeEpoch() 17 self.assertIsNotNone(cocoa_time_epoch) 18 19 20class CocoaTimeTest(unittest.TestCase): 21 """Tests for the Cocoa timestamp.""" 22 23 # pylint: disable=protected-access 24 25 def testProperties(self): 26 """Tests the properties.""" 27 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.0) 28 self.assertEqual(cocoa_time_object.timestamp, 395011845.0) 29 30 cocoa_time_object = cocoa_time.CocoaTime() 31 self.assertIsNone(cocoa_time_object.timestamp) 32 33 def testGetNormalizedTimestamp(self): 34 """Tests the _GetNormalizedTimestamp function.""" 35 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.0) 36 37 normalized_timestamp = cocoa_time_object._GetNormalizedTimestamp() 38 self.assertEqual(normalized_timestamp, decimal.Decimal('1373319045.0')) 39 40 cocoa_time_object = cocoa_time.CocoaTime( 41 time_zone_offset=60, timestamp=395011845.0) 42 43 normalized_timestamp = cocoa_time_object._GetNormalizedTimestamp() 44 self.assertEqual(normalized_timestamp, decimal.Decimal('1373315445.0')) 45 46 cocoa_time_object = cocoa_time.CocoaTime() 47 48 normalized_timestamp = cocoa_time_object._GetNormalizedTimestamp() 49 self.assertIsNone(normalized_timestamp) 50 51 def testCopyFromDateTimeString(self): 52 """Tests the CopyFromDateTimeString function.""" 53 cocoa_time_object = cocoa_time.CocoaTime() 54 55 cocoa_time_object.CopyFromDateTimeString('2013-07-08') 56 self.assertEqual(cocoa_time_object._timestamp, 394934400.0) 57 self.assertEqual(cocoa_time_object._time_zone_offset, 0) 58 59 cocoa_time_object.CopyFromDateTimeString('2013-07-08 21:30:45') 60 self.assertEqual(cocoa_time_object._timestamp, 395011845.0) 61 self.assertEqual(cocoa_time_object._time_zone_offset, 0) 62 63 cocoa_time_object.CopyFromDateTimeString('2013-07-08 21:30:45.546875') 64 self.assertEqual(cocoa_time_object._timestamp, 395011845.546875) 65 self.assertEqual(cocoa_time_object._time_zone_offset, 0) 66 67 cocoa_time_object.CopyFromDateTimeString('2013-07-08 21:30:45.546875-01:00') 68 self.assertEqual(cocoa_time_object._timestamp, 395011845.546875) 69 self.assertEqual(cocoa_time_object._time_zone_offset, -60) 70 71 cocoa_time_object.CopyFromDateTimeString('2013-07-08 21:30:45.546875+01:00') 72 self.assertEqual(cocoa_time_object._timestamp, 395011845.546875) 73 self.assertEqual(cocoa_time_object._time_zone_offset, 60) 74 75 cocoa_time_object.CopyFromDateTimeString('2001-01-02 00:00:00') 76 self.assertEqual(cocoa_time_object._timestamp, 86400.0) 77 self.assertEqual(cocoa_time_object._time_zone_offset, 0) 78 79 def testCopyToDateTimeString(self): 80 """Tests the CopyToDateTimeString function.""" 81 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.546875) 82 83 date_time_string = cocoa_time_object.CopyToDateTimeString() 84 self.assertEqual(date_time_string, '2013-07-08 21:30:45.546875') 85 86 epoch_year = cocoa_time_object._EPOCH.year 87 cocoa_time_object._EPOCH.year = -1 88 89 with self.assertRaises(ValueError): 90 cocoa_time_object.CopyToDateTimeString() 91 92 cocoa_time_object._EPOCH.year = epoch_year 93 94 cocoa_time_object = cocoa_time.CocoaTime() 95 96 date_time_string = cocoa_time_object.CopyToDateTimeString() 97 self.assertIsNone(date_time_string) 98 99 def testCopyToDateTimeStringISO8601(self): 100 """Tests the CopyToDateTimeStringISO8601 function.""" 101 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.546875) 102 103 date_time_string = cocoa_time_object.CopyToDateTimeStringISO8601() 104 self.assertEqual(date_time_string, '2013-07-08T21:30:45.546875Z') 105 106 def testGetDate(self): 107 """Tests the GetDate function.""" 108 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.546875) 109 110 date_tuple = cocoa_time_object.GetDate() 111 self.assertEqual(date_tuple, (2013, 7, 8)) 112 113 cocoa_time_object = cocoa_time.CocoaTime() 114 115 date_tuple = cocoa_time_object.GetDate() 116 self.assertEqual(date_tuple, (None, None, None)) 117 118 def testGetDateWithTimeOfDay(self): 119 """Tests the GetDateWithTimeOfDay function.""" 120 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.546875) 121 122 date_with_time_of_day_tuple = cocoa_time_object.GetDateWithTimeOfDay() 123 self.assertEqual(date_with_time_of_day_tuple, (2013, 7, 8, 21, 30, 45)) 124 125 cocoa_time_object = cocoa_time.CocoaTime() 126 127 date_with_time_of_day_tuple = cocoa_time_object.GetDateWithTimeOfDay() 128 self.assertEqual( 129 date_with_time_of_day_tuple, (None, None, None, None, None, None)) 130 131 # TODO: remove this method when there is no more need for it in plaso. 132 def testGetPlasoTimestamp(self): 133 """Tests the GetPlasoTimestamp function.""" 134 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.0) 135 136 micro_posix_timestamp = cocoa_time_object.GetPlasoTimestamp() 137 self.assertEqual(micro_posix_timestamp, 1373319045000000) 138 139 cocoa_time_object = cocoa_time.CocoaTime() 140 141 micro_posix_timestamp = cocoa_time_object.GetPlasoTimestamp() 142 self.assertIsNone(micro_posix_timestamp) 143 144 def testGetTimeOfDay(self): 145 """Tests the GetTimeOfDay function.""" 146 cocoa_time_object = cocoa_time.CocoaTime(timestamp=395011845.546875) 147 148 time_of_day_tuple = cocoa_time_object.GetTimeOfDay() 149 self.assertEqual(time_of_day_tuple, (21, 30, 45)) 150 151 cocoa_time_object = cocoa_time.CocoaTime() 152 153 time_of_day_tuple = cocoa_time_object.GetTimeOfDay() 154 self.assertEqual(time_of_day_tuple, (None, None, None)) 155 156 157if __name__ == '__main__': 158 unittest.main() 159