Skip to content

Commit df6f79d

Browse files
authored
Worked on tests (#305)
1 parent 25a0e69 commit df6f79d

12 files changed

Lines changed: 114 additions & 5 deletions

File tree

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ exclude .gitignore
55
exclude *.pyc
66
recursive-include config *
77
recursive-exclude dfdatetime *.pyc
8-
# The test scripts are not required in a binary distribution package they
8+
# The test scripts are not required in a binary distribution package they
99
# are considered source distribution files and excluded by find_package().
1010
recursive-include tests *.py

config/dpkg/changelog

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
dfdatetime (20260507-1) unstable; urgency=low
1+
dfdatetime (20260513-1) unstable; urgency=low
22

33
* Auto-generated
44

5-
-- Log2Timeline maintainers <log2timeline-maintainers@googlegroups.com> Thu, 07 May 2026 05:21:30 +0200
5+
-- Log2Timeline maintainers <log2timeline-maintainers@googlegroups.com> Wed, 13 May 2026 17:16:59 +0200

dfdatetime/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,4 @@
2424
from dfdatetime import webkit_time
2525

2626

27-
__version__ = '20260507'
27+
__version__ = '20260513'

dfdatetime/serializer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ def ConvertJSONToDateTimeValues(cls, json_dict):
182182
183183
Returns:
184184
dfdatetime.DateTimeValues: date and time values.
185+
186+
Raises:
187+
KeyError: If date and time values type is not supported by factory.
185188
"""
186189
class_name = json_dict.get('__class_name__')
187190
if class_name:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "dfdatetime"
7-
version = "20260507"
7+
version = "20260513"
88
description = "Digital Forensics date and time (dfDateTime)"
99
maintainers = [
1010
{ name = "Log2Timeline maintainers", email = "log2timeline-maintainers@googlegroups.com" },

tests/apfs_time.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ def testCopyFromDateTimeString(self):
5252

5353
def testCopyToDateTimeString(self):
5454
"""Tests the CopyToDateTimeString function."""
55+
apfs_time_object = apfs_time.APFSTime(timestamp=1281643591987654321)
56+
57+
date_time_string = apfs_time_object.CopyToDateTimeString()
58+
self.assertEqual(date_time_string, '2010-08-12 20:06:31.987654321')
59+
5560
apfs_time_object = apfs_time.APFSTime(timestamp=9223372036854775810)
5661

5762
date_time_string = apfs_time_object.CopyToDateTimeString()

tests/decorators.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
#!/usr/bin/env python3
2+
"""Tests for the decorators."""
3+
4+
import unittest
5+
import warnings
6+
7+
from dfdatetime import decorators
8+
9+
10+
class TestClass:
11+
"""Class for testing deprecated decorator."""
12+
13+
def Method(self):
14+
"""Test method."""
15+
return 'result'
16+
17+
@decorators.deprecated
18+
def DeprecatedMethod(self):
19+
"""Deprecated test method."""
20+
return 'deprecated_result'
21+
22+
23+
class DeprecatedTest(unittest.TestCase):
24+
"""Tests for the deprecated decorator."""
25+
26+
def test_deprecated(self):
27+
"""Tests the deprecated decorator."""
28+
test_object = TestClass()
29+
30+
result = test_object.Method()
31+
self.assertEqual(result, 'result')
32+
33+
with warnings.catch_warnings(record=True) as warning:
34+
warnings.simplefilter('always', DeprecationWarning)
35+
36+
result = test_object.DeprecatedMethod()
37+
38+
self.assertEqual(result, 'deprecated_result')
39+
self.assertEqual(len(warning), 1)
40+
self.assertIn('DeprecatedMethod', str(warning[0].message))
41+
42+
43+
if __name__ == '__main__':
44+
unittest.main()

tests/dotnet_datetime.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,19 @@ def testCopyToDateTimeString(self):
9393
dotnet_date_string = dotnet_date_time.CopyToDateTimeString()
9494
self.assertEqual(dotnet_date_string, '2020-12-12 12:12:12.1230000')
9595

96+
# Test out of range timestamp
97+
dotnet_date_time = dotnet_datetime.DotNetDateTime(timestamp=-1)
98+
self.assertIsNone(dotnet_date_time.CopyToDateTimeString())
99+
100+
dotnet_date_time = dotnet_datetime.DotNetDateTime(
101+
timestamp=dotnet_datetime.DotNetDateTime._UINT64_MAX + 1)
102+
self.assertIsNone(dotnet_date_time.CopyToDateTimeString())
103+
104+
# Test year > 9999
105+
dotnet_date_time = dotnet_datetime.DotNetDateTime()
106+
with self.assertRaises(ValueError):
107+
dotnet_date_time.CopyFromDateTimeString('10000-01-01')
108+
96109

97110
if __name__ == '__main__':
98111
unittest.main()

tests/factory.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ def testDateTimeValuesRegistration(self):
7272
len(factory.Factory._date_time_values_types),
7373
number_of_date_time_values_types)
7474

75+
with self.assertRaises(KeyError):
76+
factory.Factory.DeregisterDateTimeValues(TestDateTimeValues)
77+
7578
def testNewDateTimeValues(self):
7679
"""Tests the NewDateTimeValues function."""
7780
test_date_time_values = factory.Factory.NewDateTimeValues(

tests/golang_time.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ def testGetNumberOfSeconds(self):
135135
golang_timestamp = bytes.fromhex('ff0000000000000000000000000000')
136136
golang_time_object._GetNumberOfSeconds(golang_timestamp)
137137

138+
with self.assertRaises(ValueError):
139+
golang_timestamp = bytes.fromhex('ffffffffffffffffffffffffffff01')
140+
golang_time_object._GetNumberOfSeconds(golang_timestamp)
141+
138142
def testCopyFromDateTimeString(self):
139143
"""Tests the CopyFromDateTimeString function."""
140144
golang_time_object = golang_time.GolangTime()
@@ -170,6 +174,9 @@ def testCopyFromDateTimeString(self):
170174
self.assertEqual(golang_time_object._nanoseconds, 567890000)
171175
self.assertEqual(golang_time_object._time_zone_offset, 60)
172176

177+
with self.assertRaises(ValueError):
178+
golang_time_object.CopyFromDateTimeString('-0001-01-01')
179+
173180
def testCopyToDateTimeString(self):
174181
"""Test the CopyToDateTimeString function."""
175182
golang_timestamp = bytes.fromhex('010000000eafffe8d121d95050ffff')
@@ -194,6 +201,10 @@ def testCopyToDateTimeString(self):
194201
date_time_string = golang_time_object.CopyToDateTimeString()
195202
self.assertEqual(date_time_string, '2000-01-01 12:23:45.000056789')
196203

204+
golang_time_object = golang_time.GolangTime()
205+
date_time_string = golang_time_object.CopyToDateTimeString()
206+
self.assertIsNone(date_time_string)
207+
197208

198209
if __name__ == '__main__':
199210
unittest.main()

0 commit comments

Comments
 (0)