def test_valid_solar(self):
     # Sunrise.
     field = "Mo,Th 09:00-12:00,13:00-sunrise"
     oh = main.OHParser(field)
     # Sunset.
     field = "Mo,Th 09:00-12:00,13:00-sunset"
     oh = main.OHParser(field)
 def test_valid_solar_offset(self):
     # Sunrise.
     field = "Mo,Th 09:00-12:00,13:00-(sunrise+02:00)"
     oh = main.OHParser(field)
     # Sunset.
     field = "Mo,Th 09:00-12:00,13:00-(sunset-02:00)"
     oh = main.OHParser(field)
 def test_invalid_days(self):
     field = "Mo,Wx 09:00-12:00,13:00-19:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     field = "Pl-Mo 09:00-12:00,13:00-19:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
 def test_invalid_solar(self):
     # Sunrise.
     field = "Mo,Th 09:00-12:00,13:00-(sunrise)"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     # Sunset.
     field = "Mo,Th 09:00-12:00,13:00-(sunset)"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
 def test_invalid_solar_offset(self):
     field = "Mo,Th 09:00-12:00,13:00-(sunrise=02:00)"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     field = "Mo,Th 09:00-12:00,13:00-(sunrise02:00)"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     field = "Mo,Th 09:00-12:00,13:00-(sunrise+02:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
 def test_exceptional_days(self):
     field = "Dec 25 off"
     oh = main.OHParser(field)
     self.assertEqual(len(oh._tree.exceptional_dates), 1)
     
     field = "Jan 1 13:00-19:00"
     oh = main.OHParser(field)
     self.assertEqual(len(oh._tree.exceptional_dates), 1)
     
     field = "Jan 1 13:00-19:00; Dec 25 off"
     oh = main.OHParser(field)
     self.assertEqual(len(oh._tree.exceptional_dates), 2)
 def test_invalid_patterns(self):
     field = "easter 10:00-20:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     
     field = "Mo-Fr 20:00-02:00"
     with self.assertRaises(exceptions.SpanOverMidnight) as context:
         oh = main.OHParser(field)
     
     field = "Su[1] 10:00-20:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     
     field = "SH,PH Mo-Fr 10:00-20:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     
     field = "SH,PH Mo-Fr,Su 10:00-20:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     
     field = "Jan-Feb,Aug Mo-Fr,Su 10:00-20:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
     
     field = "week 1-53/2 Fr 09:00-12:00"
     with self.assertRaises(exceptions.ParseError) as context:
         oh = main.OHParser(field)
 def test_3(self):
     field = "24/7"
     oh = main.OHParser(field)
     # Is it open?
     dt = datetime.datetime(2016, 2, 1, 15, 30, tzinfo=pytz.timezone("UTC"))
     self.assertTrue(oh.is_open(dt))
     dt = datetime.datetime(2016, 2, 1, 19, 30, tzinfo=pytz.timezone("UTC"))
     self.assertTrue(oh.is_open(dt))
     dt = datetime.datetime(2016, 2, 1, 12, 10, tzinfo=pytz.timezone("UTC"))
     self.assertTrue(oh.is_open(dt))
     # Periods
     self.assertEqual(
         oh.get_day(datetime.date.today()).periods[0].beginning.time(),
         datetime.time.min.replace(tzinfo=pytz.UTC)
     )
 def test_2(self):
     field = "Mo,Th 09:00-12:00,13:00-19:00"
     oh = main.OHParser(field)
     # Is it open?
     dt = datetime.datetime(2016, 2, 1, 15, 30, tzinfo=pytz.timezone("UTC"))
     self.assertTrue(oh.is_open(dt))
     dt = datetime.datetime(2016, 2, 1, 19, 30, tzinfo=pytz.timezone("UTC"))
     self.assertFalse(oh.is_open(dt))
     dt = datetime.datetime(2016, 2, 1, 12, 10, tzinfo=pytz.timezone("UTC"))
     self.assertFalse(oh.is_open(dt))
     # Next change.
     self.assertEqual(
         oh.next_change(dt),
         datetime.datetime(2016, 2, 1, 13, 0, tzinfo=pytz.timezone("UTC"))
     )
 def test_regulars(self):
     field = "Mo-Sa 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Mo,Th 09:00-sunset"
     oh = main.OHParser(field)
     
     field = "Mo,Th (sunrise+02:00)-sunset"
     oh = main.OHParser(field)
     
     field = "Mo,SH 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Mo,SH 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan-Feb 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan,Aug 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan Mo 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan Mo-Fr 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan,Feb Mo 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan-Feb Mo 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "Jan-Feb Mo-Fr 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "SH Mo 09:00-19:00"
     oh = main.OHParser(field)
     
     field = "SH Mo-Fr 09:00-19:00"
     oh = main.OHParser(field)
 def test_1(self):
     field = "Mo-Sa 09:00-19:00"
     oh = main.OHParser(field)
     dt = datetime.datetime(2017, 1, 2, 15, 30, tzinfo=pytz.timezone("Europe/Paris"))
     # Is it open?
     self.assertTrue(oh.is_open(dt))