import os
import numpy as np
import pytest
import las_rs
test_dir = os.path.dirname(__file__)
def fixture(fn):
return os.path.join(test_dir, "fixtures", fn)
@pytest.mark.xfail(reason="not yet implemented")
def test_comma_decimal_mark():
las = las_rs.read(fixture("edge_cases/comma_decimal.las"), read_policy="comma-decimal-mark")
dept = las.curves["DEPT"].data
assert dept[1] == pytest.approx(1671.0)
@pytest.mark.xfail(reason="not yet implemented")
def test_index_not_null_replaced():
las = las_rs.read(fixture("edge_cases/index_null.las"))
dept = las.curves["DEPT"].data
assert not np.isnan(dept[2])
assert dept[2] == pytest.approx(-999.25)
@pytest.mark.xfail(reason="not yet implemented")
def test_skip_data_comments():
las = las_rs.read(fixture("edge_cases/comment_lines.las"))
dept = las.curves["DEPT"].data
assert len(dept) == 3
@pytest.mark.xfail(reason="not yet implemented")
def test_data_shape_matches_curves():
las = las_rs.read(fixture("v12/sample_v12.las"))
n_curves = len(las.curves)
data = las.data assert data.shape[1] == n_curves
@pytest.mark.xfail(reason="not yet implemented")
def test_wrapped_v12_reads():
las = las_rs.read(fixture("v12/sample_v12_wrapped.las"))
assert las.data.shape == (4, 12)
@pytest.mark.xfail(reason="not yet implemented")
def test_wrapped_v12_values():
las = las_rs.read(fixture("v12/sample_v12_wrapped.las"))
dept = las.curves["DEPT"].data
gr = las.curves["GR"].data
assert dept[0] == pytest.approx(800.0)
assert gr[0] == pytest.approx(34.215)
@pytest.mark.xfail(reason="not yet implemented")
def test_wrapped_v20_reads():
las = las_rs.read(fixture("v20/sample_v20_wrapped.las"))
assert las.data.shape == (3, 10)
@pytest.mark.xfail(reason="not yet implemented")
def test_dtypes_auto_float():
las = las_rs.read(fixture("v12/sample_v12.las"))
for curve in las.curves:
assert curve.data.dtype == np.float64
@pytest.mark.xfail(reason="not yet implemented")
def test_dtypes_auto_string():
las = las_rs.read(
fixture("edge_cases/comment_lines.las"),
dtypes="auto",
)
for curve in las.curves:
assert curve.data.dtype in (np.float64, object)
@pytest.mark.xfail(reason="not yet implemented")
def test_dtypes_specified_dict():
las = las_rs.read(fixture("v12/sample_v12.las"), dtypes={"GR": int})
assert las.curves["GR"].data.dtype == np.intp or np.issubdtype(
las.curves["GR"].data.dtype, np.integer
)
@pytest.mark.xfail(reason="not yet implemented")
def test_dtypes_specified_list():
las = las_rs.read(fixture("v12/sample_v12.las"), dtypes=[float, float, float, float])
for curve in las.curves:
assert np.issubdtype(curve.data.dtype, np.floating)
@pytest.mark.xfail(reason="not yet implemented")
def test_engine_normal():
las = las_rs.read(fixture("v12/sample_v12.las"), engine="normal")
dept = las.curves["DEPT"].data
assert dept[0] == pytest.approx(500.0)
assert len(dept) == 6
@pytest.mark.xfail(reason="not yet implemented")
def test_engine_numpy():
las_normal = las_rs.read(fixture("v12/sample_v12.las"), engine="normal")
las_numpy = las_rs.read(fixture("v12/sample_v12.las"), engine="numpy")
np.testing.assert_array_almost_equal(
las_normal.curves["DEPT"].data,
las_numpy.curves["DEPT"].data,
)