@@ -310,6 +310,19 @@ def test_lte(self, earlier, later):
310
310
assert earlier <= later
311
311
assert later >= earlier
312
312
313
+ def test_gt_lt_unknown_years (self ):
314
+ # unknown years cannot be compared on either side...
315
+ year100 = Undate (100 )
316
+ some_january = Undate (month = 1 )
317
+ assert not year100 < some_january
318
+ assert not year100 <= some_january
319
+ assert not year100 > some_january
320
+ assert not year100 >= some_january
321
+ assert not some_january < year100
322
+ assert not some_january <= year100
323
+ assert not some_january > year100
324
+ assert not some_january >= year100
325
+
313
326
def test_lt_notimplemented (self ):
314
327
# how to compare mixed precision where dates overlap?
315
328
# if the second date falls *within* earliest/latest,
@@ -362,6 +375,9 @@ def test_contains(self, date1, date2):
362
375
(Undate (1980 , "XX" ), Undate (1980 , "XX" )),
363
376
# - partially unknown month to unknown month
364
377
(Undate (1801 , "1X" ), Undate (1801 , "XX" )),
378
+ # fully unknown year
379
+ (Undate (month = 6 , day = 1 ), Undate (2022 )),
380
+ (Undate (1950 ), Undate (day = 31 )),
365
381
]
366
382
367
383
@pytest .mark .parametrize ("date1,date2" , testdata_not_contains )
@@ -500,6 +516,7 @@ def test_partiallyknownyear_duration(self):
500
516
assert Undate ("XXX" , calendar = "Hebrew" ).duration ().days == UnInt (353 , 385 )
501
517
502
518
def test_known_year (self ):
519
+ # known OR partially known
503
520
assert Undate (2022 ).known_year is True
504
521
assert Undate (month = 2 , day = 5 ).known_year is False
505
522
# partially known year is not known
@@ -521,6 +538,34 @@ def test_is_known_day(self):
521
538
assert Undate (month = 1 , day = "X5" ).is_known ("day" ) is False
522
539
assert Undate (month = 1 , day = "XX" ).is_known ("day" ) is False
523
540
541
+ def test_unknown_year (self ):
542
+ # fully unknown year
543
+ assert Undate (month = 2 , day = 5 ).unknown_year is True
544
+ # known or partially known years = all false for unknown
545
+ assert Undate (2022 ).unknown_year is False
546
+ # partially known year is not unknown
547
+ assert Undate ("19XX" ).unknown_year is False
548
+ # fully known string year should be known
549
+ assert Undate ("1900" ).unknown_year is False
550
+
551
+ def test_is_unknown_month (self ):
552
+ # fully unknown month
553
+ assert Undate (2022 ).is_unknown ("month" ) is True
554
+ assert Undate (day = 10 ).is_unknown ("month" ) is True
555
+ assert Undate (2022 , 2 ).is_unknown ("month" ) is False
556
+ assert Undate (2022 , "5" ).is_unknown ("month" ) is False
557
+ assert Undate (2022 , "1X" ).is_unknown ("month" ) is False
558
+ assert Undate (2022 , "XX" ).is_unknown ("month" ) is False
559
+
560
+ def test_is_unknown_day (self ):
561
+ # fully unknown day
562
+ assert Undate (1984 ).is_unknown ("day" ) is True
563
+ assert Undate (month = 5 ).is_unknown ("day" ) is True
564
+ assert Undate (month = 1 , day = 3 ).is_unknown ("day" ) is False
565
+ assert Undate (month = 1 , day = "5" ).is_unknown ("day" ) is False
566
+ assert Undate (month = 1 , day = "X5" ).is_unknown ("day" ) is False
567
+ assert Undate (month = 1 , day = "XX" ).is_unknown ("day" ) is False
568
+
524
569
def test_parse (self ):
525
570
assert Undate .parse ("1984" , "EDTF" ) == Undate (1984 )
526
571
assert Undate .parse ("1984-04" , "EDTF" ) == Undate (1984 , 4 )
0 commit comments