Esempio n. 1
0
def test_NamedTupleReader_row_name(row_name='Spam'):  # noqa: N802
    lines = ['spam,eggs\r\n', '1,2\r\n']
    reader = NamedTupleReader(lines, row_name=row_name)
    row, = list(reader)

    assert row == ('1', '2')
    assert row == type(row)(spam='1', eggs='2')
    assert type(row) is reader.row_cls
    assert reader.row_cls.__name__ == row_name
Esempio n. 2
0
def test_NamedTupleReader_rename_callable():  # noqa: N802
    lines = ['spam.eggs,spam\r\n', '1,2\r\n']
    reader = NamedTupleReader(lines, rename=lambda x: x.replace('.', '_'))
    row, = list(reader)

    assert row == ('1', '2')
    assert row == type(row)(spam_eggs='1', spam='2')
    assert type(row) is reader.row_cls
    assert reader.row_cls._fields == ('spam_eggs', 'spam')
Esempio n. 3
0
def test_NamedTupleReader_rename():  # noqa: N802
    lines = ['def,spam.eggs,spam\r\n', '1,2,3\r\n']
    reader = NamedTupleReader(lines, rename=True)
    row, = list(reader)

    assert row == ('1', '2', '3')
    assert row == type(row)(_0='1', _1='2', spam='3')
    assert type(row) is reader.row_cls
    assert reader.row_cls._fields == ('_0', '_1', 'spam')
Esempio n. 4
0
def test_NamedTupleReader():  # noqa: N802
    reader = NamedTupleReader(['spam,eggs\r\n', '1,2\r\n'])
    assert reader.dialect.delimiter == ','
    assert reader.line_num == 0
    assert reader.row_cls is None

    row = next(reader)
    assert row == ('1', '2')
    assert row == type(row)(spam='1', eggs='2')
    assert type(row) is reader.row_cls
    assert issubclass(reader.row_cls, tuple)
    assert reader.row_cls.__name__ == 'Row'
    assert reader.row_cls._fields == ('spam', 'eggs')
    for _ in range(2):
        assert reader.line_num == 2
        assert not list(reader)
Esempio n. 5
0
def test_NamedTupleReader_invalid_fieldname(header, match):
    reader = NamedTupleReader([header, '1,2\r\n'])
    with pytest.raises(ValueError, match=match):
        next(reader)
Esempio n. 6
0
def test_NamedTupleReader_empty():  # noqa: N802
    reader = NamedTupleReader([])
    with pytest.raises(RuntimeError, match='missing header'):
        next(reader)