def test_nbscorer(): # We only test that it runs just fine X = [("a", "b"), ("a", ), ("b"), ("a", "b", "a", "b")] y = [False, True, True, False] model = train_naive_bayes(X, y) scorer = NaiveBayesScorer(model) pp = PartialParse((Time(), Interval()), ("rule1", "rule2")) pp.prod[0].mstart = 0 pp.prod[1].mend = 1 pp.prod[0].mend = 1 pp.prod[1].mend = 2 assert 0.0 <= scorer.score("ab", datetime.datetime(2019, 1, 1), pp) <= 1.0 assert 0.0 <= scorer.score_final("ab", datetime.datetime(2019, 1, 1), pp, pp.prod[1]) <= 1.0
def test_isDOW(self): self.assertTrue(Time(DOW=1).isDOW) self.assertFalse(Time().isDOW)
def test_isHour(self): self.assertTrue(Time(hour=1).isHour) self.assertFalse(Time(hour=1, minute=1).isHour) self.assertFalse(Time(hour=1, month=1).isHour)
def test_isDOM(self): self.assertTrue(Time(day=1).isDOM) self.assertFalse(Time(month=1).isDOM)
def test_isDOY(self): self.assertTrue(Time(month=1, day=1).isDOY) self.assertFalse(Time(year=1).isDOY)
def test_init(self): self.assertIsNotNone(Time())
def mock_rule(ts: datetime.datetime, a: Time) -> Time: return Time()
def test_isTOD(self): self.assertTrue(Time(hour=1, minute=1).isTOD) self.assertTrue(Time(hour=1).isTOD) self.assertFalse(Time(minute=1).isTOD) self.assertFalse(Time().isTOD)
def test_repr(self): t = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD='pod') self.assertEqual(repr(t), 'Time[0-0]{0001-01-01 01:01 (1/pod)}')
def test_hasPOD(self): self.assertTrue(Time(POD='pod').hasPOD) self.assertFalse(Time(day=1, month=1, year=1).hasPOD)
def test_hasTime(self): self.assertTrue(Time(hour=1, minute=1, day=1, month=1, year=1).hasTime) self.assertTrue(Time(hour=1, day=1, month=1, year=1).hasTime) self.assertFalse(Time(day=1, month=1, year=1).hasTime)
def test_hasDate(self): self.assertTrue(Time(year=1, month=1, day=1).hasDate) self.assertFalse(Time(year=1, month=1).isDate) self.assertFalse(Time(year=1, day=1).isDate) self.assertFalse(Time(day=1, month=1).isDate) self.assertTrue(Time(year=1, month=1, day=1, hour=1).hasDate)
def test_isYear(self): self.assertTrue(Time(year=1).isYear) self.assertFalse(Time(year=1, month=1).isYear)
def test_ruleQuarterAferHH(self): t1 = Time(hour=12, minute=1) self.assertIsNone(ruleQuarterAfterHH(None, None, t1))
def test_ruleDateTimeDateTime(self): t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2016, month=4, day=12, hour=12, minute=30) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=3, day=12, hour=12, minute=30) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=4, day=11, hour=12, minute=30) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=4, day=12, hour=11, minute=30) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=4, day=12, hour=12, minute=29) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=4, day=12, hour=12, minute=30) self.assertIsNone(ruleDateTimeDateTime(None, t1, None, t2)) t1 = Time(year=2017, month=4, day=12, hour=12, minute=30) t2 = Time(year=2017, month=4, day=12, hour=12, minute=31) self.assertIsNotNone(ruleDateTimeDateTime(None, t1, None, t2))
def test_isMonth(self): self.assertTrue(Time(month=1).isMonth) self.assertFalse(Time(day=1).isMonth) self.assertFalse(Time(year=1).isMonth)
def test_isPOD(self): self.assertTrue(Time(POD='morning').isPOD) self.assertFalse(Time(day=1).isPOD) self.assertFalse(Time(year=1).isPOD)
def test_isTimeInterval(self): self.assertTrue(Interval(Time(hour=1), Time(hour=2)).isTimeInterval)
def test_parse_nb_string() -> None: t = Time(year=1, month=1, day=1, hour=1, minute=1, DOW=1, POD="pod") assert t == parse_nb_string("Time[]{0001-01-01 01:01 (1/pod)}") assert Interval(Time(), Time()) == parse_nb_string( "Interval[]{X-X-X X:X (X/X) - X-X-X X:X (X/X)}")
def test_repr(self): self.assertEqual(repr(Interval(Time(), Time())), 'Interval[0-0]{X-X-X X:X (X/X) - X-X-X X:X (X/X)}')