@@ -500,7 +500,64 @@ def test_strict(self):
500500 self .assertEqual (5 , parsed ['second' ])
501501 self .assertEqual (0 , parsed ['subsecond' ])
502502
503+ def test_edge_cases (self ):
504+ text = '2013-11-1'
505+
506+ parsed = Parser ().parse (text )
507+ self .assertEqual (2013 , parsed ['year' ])
508+ self .assertEqual (11 , parsed ['month' ])
509+ self .assertEqual (1 , parsed ['day' ])
510+ self .assertEqual (0 , parsed ['hour' ])
511+ self .assertEqual (0 , parsed ['minute' ])
512+ self .assertEqual (0 , parsed ['second' ])
513+ self .assertEqual (0 , parsed ['subsecond' ])
514+ self .assertEqual (None , parsed ['offset' ])
515+
516+ text = '10-01-01'
517+
518+ parsed = Parser ().parse (text )
519+ self .assertEqual (2010 , parsed ['year' ])
520+ self .assertEqual (1 , parsed ['month' ])
521+ self .assertEqual (1 , parsed ['day' ])
522+ self .assertEqual (0 , parsed ['hour' ])
523+ self .assertEqual (0 , parsed ['minute' ])
524+ self .assertEqual (0 , parsed ['second' ])
525+ self .assertEqual (0 , parsed ['subsecond' ])
526+ self .assertEqual (None , parsed ['offset' ])
527+
528+ text = '31-01-01'
529+
530+ parsed = Parser ().parse (text )
531+ self .assertEqual (2031 , parsed ['year' ])
532+ self .assertEqual (1 , parsed ['month' ])
533+ self .assertEqual (1 , parsed ['day' ])
534+ self .assertEqual (0 , parsed ['hour' ])
535+ self .assertEqual (0 , parsed ['minute' ])
536+ self .assertEqual (0 , parsed ['second' ])
537+ self .assertEqual (0 , parsed ['subsecond' ])
538+ self .assertEqual (None , parsed ['offset' ])
539+
540+ text = '32-01-01'
541+
542+ parsed = Parser ().parse (text )
543+ self .assertEqual (2032 , parsed ['year' ])
544+ self .assertEqual (1 , parsed ['month' ])
545+ self .assertEqual (1 , parsed ['day' ])
546+ self .assertEqual (0 , parsed ['hour' ])
547+ self .assertEqual (0 , parsed ['minute' ])
548+ self .assertEqual (0 , parsed ['second' ])
549+ self .assertEqual (0 , parsed ['subsecond' ])
550+ self .assertEqual (None , parsed ['offset' ])
551+
503552 def test_invalid (self ):
504553 text = '201610T'
505554
506555 self .assertRaises (ParserError , Parser ().parse , text )
556+
557+ text = '2012-W54'
558+
559+ self .assertRaises (ParserError , Parser ().parse , text )
560+
561+ text = '2012-W13-8'
562+
563+ self .assertRaises (ParserError , Parser ().parse , text )
0 commit comments