Ejemplo n.º 1
0
    def test_get_records_week(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        subjects = 'a b c d e'.split(' ')

        for s in subjects:
            handler.new_category(s)

        categories = handler.active_categories

        start_date = dt.datetime(2000, 5, 1, 4, 30)

        for i in range(500):
            handler.start(random.choice(list(categories)), start_date)
            duration = dt.timedelta(seconds=random.randint(30, 60) * 60)
            handler.complete(start_date + duration)
            advance = dt.timedelta(seconds=random.randint(0, 60) * 60)
            start_date = start_date + advance + duration

        day = dt.datetime(2000, 5, 1, 6, 0)
        tuesday = data_analysis.get_records_on_day(handler,
                                                   day + dt.timedelta(days=1))
        thursday = data_analysis.get_records_on_day(handler,
                                                    day + dt.timedelta(days=3))

        actuals = data_analysis.get_records_on_week(handler, day_start=day)

        self.assertEqual(actuals[1], tuesday)
        self.assertEqual(actuals[3], thursday)
Ejemplo n.º 2
0
    def test_category_persistence(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        self.assertEqual(handler.active_categories, ())

        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        self.assertEqual(handler.active_categories, ())

        categories = 'AP Bio,AP Chem,Physics 2,Biology 101,CS 61A'.split(',')
        for subject in categories:
            handler.new_category(subject)
        self.assertEqual(set(handler.active_categories), set(categories))

        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        self.assertEqual(set(handler.active_categories), set(categories))
Ejemplo n.º 3
0
    def test_get_records_day(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        subjects = 'a b c'.split(' ')
        for s in subjects:
            handler.new_category(s)

        start0 = dt.datetime(2002, 4, 6, 3, 0)
        end0 = dt.datetime(2002, 4, 6, 10, 0)

        start1 = dt.datetime(2002, 4, 6, 11, 0)
        end1 = dt.datetime(2002, 4, 6, 12, 0)

        start2 = dt.datetime(2002, 4, 6, 13, 0)
        end2 = dt.datetime(2002, 4, 6, 13, 30)

        start3 = dt.datetime(2002, 4, 7, 1, 0)
        end3 = dt.datetime(2002, 4, 7, 8, 0)

        day1 = dt.datetime(2002, 4, 5, 6, 0)
        day2 = dt.datetime(2002, 4, 6, 6, 0)
        day3 = dt.datetime(2002, 4, 7, 6, 0)

        starts = [start0, start1, start2, start3]
        ends = [end0, end1, end2, end3]

        categories = handler.active_categories
        cats = 'a c a a'.split(' ')

        for c, s, e in zip(cats, starts, ends):
            handler.start(c, s)
            handler.complete(e)

        day_one_stats = list(data_analysis.get_records_on_day(handler, day1))
        day_two_stats = list(data_analysis.get_records_on_day(handler, day2))
        day_three_stats = list(data_analysis.get_records_on_day(handler, day3))

        self.assertEqual(len(day_one_stats), 1)
        self.assertEqual(len(day_two_stats), 3)
        self.assertEqual(len(day_three_stats), 0)

        record_0 = Record('a', start0, end0)
        record_1 = Record('c', start1, end1)
        record_2 = Record('a', start2, end2)
        record_3 = Record('a', start3, end3)

        self.assertEqual(day_one_stats[0], record_0)
        self.assertEqual(day_two_stats[0], record_1)
        self.assertEqual(day_two_stats[1], record_2)
        self.assertEqual(day_two_stats[2], record_3)
        '''
Ejemplo n.º 4
0
    def test_category_activation(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        categories = 'AP Bio,AP Chem,Physics 2,Biology 101,CS 61A'.split(',')
        for subject in categories:
            handler.new_category(subject)
        handler.set_category_activation('AP Bio', False)
        handler.set_category_activation('CS 61A', False)
        expected = [False, True, True, True, False]
        active_categories = handler.active_categories
        for e, cat in zip(expected, categories):
            with self.subTest(e=e, cat=cat):
                self.assertEqual(cat in active_categories, e, cat)

        all_categories = handler.all_categories
        for cat in categories:
            with self.subTest(cat=cat):
                self.assertTrue(cat in all_categories)

        with self.assertRaises(ValueError):
            handler.set_category_activation(-1, False)
Ejemplo n.º 5
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, [])
Ejemplo n.º 6
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)
Ejemplo n.º 7
0
    def test_category_creation(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        self.assertEqual(handler.active_categories, ())
        with self.assertRaises(ValueError):
            handler.new_category('')

        categories = 'AP Bio,AP Chem,Physics 2,Biology 101,CS 61A'.split(',')
        added_categories = set()
        for i, subject in enumerate(categories, 1):
            with self.subTest(subject=subject):
                handler.new_category(subject)
                added_categories.add(subject)
                self.assertEqual(set(handler.active_categories),
                                 added_categories)

        with self.assertRaises(ValueError):
            handler.new_category(' ')
        for subject in categories:
            with self.subTest(subject=subject):
                with self.assertRaises(RuntimeError):
                    handler.new_category(subject)
        self.assertEqual(set(handler.active_categories), added_categories)

        handler.new_category('    decal     \t')
        self.assertTrue('decal' in handler.active_categories)
Ejemplo n.º 8
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, [])
Ejemplo n.º 9
0
    def test_rename(self):
        handler = SQLDataHandler(sqlite3.Connection(DATABASE_PATH))
        handler.new_category('AP Bio')
        handler.new_category('AP French')
        handler.new_category('CS 50')
        handler.rename_category('AP Bio', 'AP Biology')
        categories = handler.active_categories

        self.assertTrue('AP Biology' in categories)

        self.assertFalse('AP Bio' in categories)
        self.assertTrue('AP French' in categories)
        self.assertTrue('CS 50' in categories)

        with self.assertRaises(ValueError):
            handler.rename_category('apple', 'banana')
Ejemplo n.º 10
0
def set_up():
    file_management.create_anpy_dir_if_not_exist()
    handler = SQLDataHandler(sqlite3.Connection(file_management.DATABASE_PATH))
    return handler
Ejemplo n.º 11
0
        get_path(path)
    elif 'LogFile' not in config['Paths']:
        print('Invalid config file.')
        create_config(path)
        get_path(path)
    else:
        return config['Paths']['LogFile']


prompt_date = get_datetime

if __name__ == '__main__':
    # DATABASE_FILE = 'data.db'
    # CONFIG_FILE = 'config.ini'
    file_management.create_anpy_dir_if_not_exist()
    handler = SQLDataHandler(sqlite3.Connection(file_management.DATABASE_PATH))

    if not handler.active_categories:
        create_categories(handler)

    path = get_path(file_management.CONFIG_PATH)

    table, headers = table_generator.create_table_iterable_and_headers(
        data_handler=handler)

    print(tabulate(table, headers=headers))


    while True:
        if handler.is_active_session():
            active_session(handler, path)