Esempio n. 1
0
def test_filter():
    # Test filtering rows with a filter function.
    nav = Navigator(data_file, header=True)

    def when_few_tires(row):
        if row['product'] == 'tire' and int(row['quantity']) <= 3:
            return True
        else:
            return False

    rows = []
    header = content[0]
    for row in content[1:]:
        dict_row = {header[i]: str(r) for i, r in enumerate(row)}
        if when_few_tires(dict_row):
            rows.append(dict_row)

    for i, row in enumerate(nav.filter(when_few_tires)):
        assert row == rows[i]
    nav.close()
Esempio n. 2
0
def test_concurrency():
    # Test whether multiple threads can iterate through the file without losing their place.
    nav = Navigator(data_file)

    def iterate_rows():
        for i, row in enumerate(nav):
            assert row == [str(r) for r in content[i]]
        for i, row in enumerate(nav):
            assert row == [str(r) for r in content[i]]
        for i, row in enumerate(nav):
            assert row == [str(r) for r in content[i]]
        for i, row in enumerate(nav):
            assert row == [str(r) for r in content[i]]
        nav.close()

    threads = []
    for _ in range(4):
        threads.append(threading.Thread(target=iterate_rows))
    for thread in threads:
        thread.start()
    for thread in threads:
        thread.join()
    nav.close()
Esempio n. 3
0
def test__readrow():
    # Test that raw string output works.
    nav = Navigator(data_file, raw_output=True)
    for row in content:
        assert nav._readrow() == ','.join([str(r) for r in row]) + '\n'
    nav.close()

    # Test that list output works.
    nav = Navigator(data_file)
    for row in content:
        assert nav._readrow() == [str(r) for r in row]
    nav.close()

    # Test that dict output works.
    nav = Navigator(data_file, header=True)
    header = content[0]
    for row in content[1:]:
        assert nav._readrow() == {header[i]: str(r) for i, r in enumerate(row)}
    nav.close()
Esempio n. 4
0
def test_iter():
    # Test an iterator over the rows of the file.
    nav = Navigator(data_file)
    for i, row in enumerate(nav):
        assert row == [str(r) for r in content[i]]
    nav.close()