Beispiel #1
0
def test_write_wrong_complex_type(orc_type, value):
    data = io.BytesIO()
    writer = Writer(data, orc_type)
    with pytest.raises(
        (TypeError, ValueError)
    ):  # Dict construction might raise ValueError as well.
        writer.write(value)
Beispiel #2
0
def test_write_complex_type(orc_type, values):
    data = io.BytesIO()
    writer = Writer(data, orc_type, struct_repr=StructRepr.DICT)
    for rec in values:
        writer.write(rec)
    writer.close()

    data.seek(0)
    reader = Reader(data, struct_repr=StructRepr.DICT)
    assert reader.read() == values
Beispiel #3
0
def test_write():
    data = io.BytesIO()
    writer = Writer(data, "struct<col0:int,col1:string,col2:double>")
    records = [(1, "Test A", 2.13), (2, "Test B", 0.123213), (3, "Test C", 123.011234)]
    for rec in records:
        writer.write(rec)
    writer.close()
    data.seek(0)
    reader = Reader(data)
    assert reader.read() == records
Beispiel #4
0
def test_current_row():
    data = io.BytesIO()
    writer = Writer(data, "struct<col0:int,col1:string,col2:double>")
    assert writer.current_row == 0
    writer.write((0, "Test A", 0.0001))
    assert writer.current_row == 1
    for i in range(10):
        writer.write((i, "Test A", 0.0001))
    assert writer.current_row == 11
    writer.close()
    data.seek(0)
    reader = Reader(data)
    assert writer.current_row == len(reader)
Beispiel #5
0
def test_write_primitive_type(orc_type, values):
    data = io.BytesIO()
    writer = Writer(data, orc_type)
    for rec in values:
        writer.write(rec)
    writer.close()

    data.seek(0)
    reader = Reader(data)
    if orc_type == "float":
        result = reader.read()
        assert len(result) == len(values)
        for res, exp in zip(result, values):
            if exp is None:
                assert res is None
            else:
                assert math.isclose(res, exp, rel_tol=1e-07, abs_tol=0.0)
    else:
        assert reader.read() == values
Beispiel #6
0
def test_write_nones(orc_type, value):
    data = io.BytesIO()
    writer = Writer(data, orc_type, batch_size=20)
    for _ in range(100):
        writer.write(value)
    for _ in range(100):
        writer.write(None)
    writer.close()

    data.seek(0)
    reader = Reader(data, batch_size=30)
    non_nones = reader.read(100)
    nones = reader.read(100)
    assert len(reader) == 200
    if orc_type in ("float", "double"):
        assert math.isclose(non_nones[0], value, rel_tol=1e-07, abs_tol=0.0)
        assert math.isclose(non_nones[-1], value, rel_tol=1e-07, abs_tol=0.0)
    else:
        assert non_nones[0] == value
        assert non_nones[-1] == value
    assert all(row is not None for row in non_nones)
    assert all(row is None for row in nones)
Beispiel #7
0
def test_struct_repr():
    data = io.BytesIO()
    writer = Writer(data, "struct<a:int>")
    with pytest.raises(TypeError):
        writer.write({"a": 1})
    writer = Writer(data, "struct<a:int>", struct_repr=StructRepr.DICT)
    with pytest.raises(TypeError):
        writer.write((1,))
    with pytest.raises(TypeError):
        writer.write({"a": "b"})
Beispiel #8
0
def test_write_wrong_primitive_type(orc_type, value):
    data = io.BytesIO()
    writer = Writer(data, orc_type)
    with pytest.raises(TypeError):
        writer.write(value)