mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-30 10:12:33 -04:00 
			
		
		
		
	* fix: handle datetime outside the valid range supported by dart * add tests for tryFromSecondsSinceEpoch --------- Co-authored-by: shenlong-tanwen <139912620+shalong-tanwen@users.noreply.github.com>
		
			
				
	
	
		
			59 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:flutter_test/flutter_test.dart';
 | |
| import 'package:immich_mobile/utils/datetime_helpers.dart';
 | |
| 
 | |
| void main() {
 | |
|   group('tryFromSecondsSinceEpoch', () {
 | |
|     test('returns null for null input', () {
 | |
|       final result = tryFromSecondsSinceEpoch(null);
 | |
|       expect(result, isNull);
 | |
|     });
 | |
| 
 | |
|     test('returns null for value below minimum allowed range', () {
 | |
|       // _minMillisecondsSinceEpoch = -62135596800000
 | |
|       final seconds = -62135596800000 ~/ 1000 - 1; // One second before min allowed
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, isNull);
 | |
|     });
 | |
| 
 | |
|     test('returns null for value above maximum allowed range', () {
 | |
|       // _maxMillisecondsSinceEpoch = 8640000000000000
 | |
|       final seconds = 8640000000000000 ~/ 1000 + 1; // One second after max allowed
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, isNull);
 | |
|     });
 | |
| 
 | |
|     test('returns correct DateTime for minimum allowed value', () {
 | |
|       final seconds = -62135596800000 ~/ 1000; // Minimum allowed timestamp
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, DateTime.fromMillisecondsSinceEpoch(-62135596800000));
 | |
|     });
 | |
| 
 | |
|     test('returns correct DateTime for maximum allowed value', () {
 | |
|       final seconds = 8640000000000000 ~/ 1000; // Maximum allowed timestamp
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, DateTime.fromMillisecondsSinceEpoch(8640000000000000));
 | |
|     });
 | |
| 
 | |
|     test('returns correct DateTime for negative timestamp', () {
 | |
|       final seconds = -1577836800; // Dec 31, 1919 (pre-epoch)
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, DateTime.fromMillisecondsSinceEpoch(-1577836800 * 1000));
 | |
|     });
 | |
| 
 | |
|     test('returns correct DateTime for zero timestamp', () {
 | |
|       final seconds = 0; // Jan 1, 1970 (epoch)
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result, DateTime.fromMillisecondsSinceEpoch(0));
 | |
|     });
 | |
| 
 | |
|     test('returns correct DateTime for recent timestamp', () {
 | |
|       final now = DateTime.now();
 | |
|       final seconds = now.millisecondsSinceEpoch ~/ 1000;
 | |
|       final result = tryFromSecondsSinceEpoch(seconds);
 | |
|       expect(result?.year, now.year);
 | |
|       expect(result?.month, now.month);
 | |
|       expect(result?.day, now.day);
 | |
|     });
 | |
|   });
 | |
| }
 |