예제 #1
0
    def test_cancel(self):
        start = dt.datetime(2002, 4, 6, 5, 6)
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        handler.new_category('Test')
        handler.start('Test', start)
        self.assertTrue(handler.is_active_session())
        handler.cancel()
        self.assertFalse(handler.is_active_session())

        records = handler.get_records_between(dt.datetime(2002, 4, 6, 5, 0),
                                              dt.datetime(2002, 4, 6, 5, 10))
        self.assertEquals(records, [])
예제 #2
0
    def test_multiple_sessions(self):
        start1 = dt.datetime(2010, 1, 1, 10, 10)
        end1 = dt.datetime(2010, 1, 1, 12)
        start2 = dt.datetime(2010, 1, 1, 13, 0)
        end2 = dt.datetime(2010, 1, 1, 15, 0)

        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        categories = 'AP Bio,AP Chem,Physics 2,Biology 101,CS 61A'.split(',')

        for cat in categories:
            handler.new_category(cat)

        handler.start('AP Chem', start1)
        self.assertTrue(handler.is_active_session())
        with self.assertRaises(RuntimeError):
            handler.start('Biology 101')
        handler.complete(end1)

        self.assertFalse(handler.is_active_session())

        handler.start('Biology 101', start2)
        self.assertTrue(handler.is_active_session())
        handler.complete(end2)

        self.assertFalse(handler.is_active_session())

        range_begins = [
            dt.datetime(2010, 1, 1, 10, 0),
            dt.datetime(2010, 1, 1, 10, 0),
            dt.datetime(2010, 1, 1, 10, 20),
            dt.datetime(2010, 1, 1, 13, 5)
        ]

        range_ends = [
            dt.datetime(2010, 1, 1, 10, 11),
            dt.datetime(2010, 1, 1, 13, 14),
            dt.datetime(2010, 1, 1, 13, 14),
            dt.datetime(2010, 1, 1, 13, 10)
        ]

        er1 = Record('AP Chem', start1, end1)
        er2 = Record('Biology 101', start2, end2)

        expecteds = [[er1], [er1, er2], [er2], []]

        for rb, re, expected in zip(range_begins, range_ends, expecteds):
            with self.subTest(rb=rb, re=re, expected=expected):
                result = list(handler.get_records_between(rb, re))
                self.assertEqual(expected, result)
예제 #3
0
    def test_basic_session(self):
        start = dt.datetime(2015, 4, 5, 2, 0)
        end = dt.datetime(2015, 4, 5, 3, 30)

        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        categories = 'AP Bio,AP Chem,Physics 2,Biology 101,CS 61A'.split(',')

        for cat in categories:
            handler.new_category(cat)

        with self.assertRaises(RuntimeError):
            handler.complete()

        with self.assertRaises(ValueError):
            handler.start(-5, dt.datetime.now())

        handler.start('AP Bio', start)
        self.assertTrue(handler.is_active_session())

        handler.complete(end)
        self.assertFalse(handler.is_active_session())

        range_begins = [
            dt.datetime(2015, 4, 5, 1, 0),
            dt.datetime(2015, 4, 5, 1, 0),
            dt.datetime(2015, 4, 5, 1, 0),
            dt.datetime(2015, 4, 5, 2, 0),
            dt.datetime(2015, 4, 5, 3, 0)
        ]

        range_ends = [
            dt.datetime(2015, 4, 5, 1, 3),
            dt.datetime(2015, 4, 5, 2, 0),
            dt.datetime(2015, 4, 5, 2, 30),
            dt.datetime(2015, 4, 5, 2, 30),
            dt.datetime(2015, 4, 5, 4, 00)
        ]

        expected_record = Record('AP Bio', start, end)
        successful_findings = [False, False, True, True, False]

        for rb, re, sf in zip(range_begins, range_ends, successful_findings):
            with self.subTest(rb=rb, re=re, sf=sf):
                result = list(handler.get_records_between(rb, re))
                if sf:
                    self.assertEqual(result[0], expected_record)
                else:
                    self.assertEqual(result, [])