@@ -362,6 +362,26 @@ describe('Date object', function()
362
362
}, dates )
363
363
end )
364
364
365
+ it (' should return proper diff in days between DST difference' , function ()
366
+ -- No overlap
367
+ local date = Date .from_string (' 2023-06-26' )
368
+ local end_date = Date .from_string (' 2023-06-27' )
369
+ assert .are .same (1 , end_date :diff (date ))
370
+ assert .are .same (1440 , end_date :diff (date , ' minute' ))
371
+
372
+ -- DST start overlap
373
+ local date_no_dst = Date .from_string (' 2023-03-26 Sun' )
374
+ local end_date_dst = Date .from_string (' 2023-03-27 Mon' )
375
+ assert .are .same (1 , end_date_dst :diff (date_no_dst ))
376
+ assert .are .same (1440 , end_date_dst :diff (date_no_dst , ' minute' ))
377
+
378
+ -- DST end overlap
379
+ local date_dst = Date .from_string (' 2023-10-28 Sun' )
380
+ local end_date_no_dst = Date .from_string (' 2023-10-29 Mon' )
381
+ assert .are .same (1 , end_date_no_dst :diff (date_dst ))
382
+ assert .are .same (1440 , end_date_no_dst :diff (date_dst , ' minute' ))
383
+ end )
384
+
365
385
it (' should format the date' , function ()
366
386
local date = Date .from_string (' 2021-05-12 14:00' )
367
387
assert .are .same (' Wednesday 12 May' , date :format (' %A %d %B' ))
@@ -394,6 +414,7 @@ describe('Date object', function()
394
414
date_only = true ,
395
415
day = 15 ,
396
416
dayname = ' Sat' ,
417
+ is_dst = true ,
397
418
hour = 0 ,
398
419
min = 0 ,
399
420
month = 5 ,
@@ -425,6 +446,7 @@ describe('Date object', function()
425
446
dayname = ' Sat' ,
426
447
hour = 0 ,
427
448
min = 0 ,
449
+ is_dst = true ,
428
450
month = 5 ,
429
451
is_date_range_start = false ,
430
452
is_date_range_end = false ,
@@ -448,6 +470,7 @@ describe('Date object', function()
448
470
hour = 9 ,
449
471
min = 25 ,
450
472
month = 6 ,
473
+ is_dst = true ,
451
474
is_date_range_start = false ,
452
475
is_date_range_end = false ,
453
476
related_date_range = nil ,
@@ -476,6 +499,7 @@ describe('Date object', function()
476
499
dayname = ' Sat' ,
477
500
hour = 0 ,
478
501
min = 0 ,
502
+ is_dst = true ,
479
503
month = 5 ,
480
504
is_date_range_start = false ,
481
505
is_date_range_end = false ,
@@ -499,6 +523,7 @@ describe('Date object', function()
499
523
hour = 0 ,
500
524
min = 0 ,
501
525
month = 5 ,
526
+ is_dst = true ,
502
527
is_date_range_start = false ,
503
528
is_date_range_end = false ,
504
529
related_date_range = nil ,
@@ -630,6 +655,7 @@ describe('Date object', function()
630
655
dayname = ' Sat' ,
631
656
hour = 14 ,
632
657
min = 30 ,
658
+ is_dst = true ,
633
659
month = 5 ,
634
660
is_date_range_start = false ,
635
661
is_date_range_end = false ,
@@ -654,6 +680,7 @@ describe('Date object', function()
654
680
hour = 0 ,
655
681
min = 0 ,
656
682
month = 5 ,
683
+ is_dst = true ,
657
684
is_date_range_start = false ,
658
685
is_date_range_end = false ,
659
686
related_date_range = nil ,
@@ -681,6 +708,7 @@ describe('Date object', function()
681
708
day = 15 ,
682
709
dayname = ' Sat' ,
683
710
hour = 0 ,
711
+ is_dst = true ,
684
712
min = 0 ,
685
713
month = 5 ,
686
714
is_date_range_start = true ,
@@ -705,6 +733,7 @@ describe('Date object', function()
705
733
hour = 0 ,
706
734
min = 0 ,
707
735
month = 5 ,
736
+ is_dst = true ,
708
737
is_date_range_start = false ,
709
738
is_date_range_end = true ,
710
739
related_date_range = dates [1 ],
@@ -730,6 +759,7 @@ describe('Date object', function()
730
759
is_date_range_start = false ,
731
760
is_date_range_end = false ,
732
761
related_date_range = nil ,
762
+ is_dst = true ,
733
763
range = Range :new ({
734
764
start_line = 1 ,
735
765
end_line = 1 ,
0 commit comments