import os
import pytest
import las_rs
test_dir = os.path.dirname(__file__)
def fixture(fn):
return os.path.join(test_dir, "fixtures", fn)
def _parse_line(line):
return las_rs.reader.read_header_line(line)
@pytest.mark.xfail(reason="not yet implemented")
def test_standard_line():
result = _parse_line("DEPT.M : DEPTH")
assert result["name"] == "DEPT"
assert result["unit"] == "M"
assert result["value"].strip() == ""
assert "DEPTH" in result["descr"]
@pytest.mark.xfail(reason="not yet implemented")
def test_value_and_descr():
result = _parse_line("BHT .DEGC 42.0 : BOTTOM HOLE TEMP")
assert result["name"].strip() == "BHT"
assert result["unit"] == "DEGC"
assert result["value"].strip() == "42.0"
assert "BOTTOM HOLE TEMP" in result["descr"]
@pytest.mark.xfail(reason="not yet implemented")
def test_empty_unit():
result = _parse_line("COMP. ACME INC : COMPANY")
assert result["name"].strip() == "COMP"
assert result["unit"].strip() == ""
assert "ACME INC" in result["value"] or "ACME INC" in result["descr"]
@pytest.mark.xfail(reason="not yet implemented")
def test_line_without_period():
result = _parse_line("COMP ACME CORP : COMPANY NAME")
assert result["name"].strip() != ""
@pytest.mark.xfail(reason="not yet implemented")
def test_bracketed_unit():
las = las_rs.read(fixture("edge_cases/bracketed_units.las"))
dept_unit = las.curves["DEPT"].unit
gr_unit = las.curves["GR"].unit
assert "[" not in dept_unit
assert "]" not in dept_unit
assert "(" not in gr_unit
assert ")" not in gr_unit
@pytest.mark.xfail(reason="not yet implemented")
def test_colon_in_time_value():
las = las_rs.read(fixture("edge_cases/colon_in_value.las"))
tlb = las.params["TLB"].value
assert ":" in tlb
assert "13" in tlb and "45" in tlb
@pytest.mark.xfail(reason="not yet implemented")
def test_dot_in_mnemonic():
las = las_rs.read(fixture("edge_cases/dot_in_mnemonic.las"))
param_mnemonics = [p.mnemonic for p in las.params]
assert "BHT" in param_mnemonics
@pytest.mark.xfail(reason="not yet implemented")
def test_v12_well_order():
las = las_rs.read(fixture("v12/sample_v12.las"))
comp_value = las.well["COMP"].value
assert "ACME DRILLING" in comp_value
@pytest.mark.xfail(reason="not yet implemented")
def test_v20_well_order():
las = las_rs.read(fixture("v20/sample_v20.las"))
comp_value = las.well["COMP"].value
assert "OCEANIC ENERGY" in comp_value
@pytest.mark.xfail(reason="not yet implemented")
def test_ignore_comment_lines():
las = las_rs.read(fixture("edge_cases/comment_lines.las"))
for section_items in [las.version, las.well, las.curves, las.params]:
for item in section_items:
assert not item.mnemonic.startswith("#")
@pytest.mark.xfail(reason="not yet implemented")
def test_mnemonic_case_upper():
las = las_rs.read(
fixture("v20/sample_v20.las"),
mnemonic_case="upper",
)
for item in las.curves:
assert item.mnemonic == item.mnemonic.upper()
@pytest.mark.xfail(reason="not yet implemented")
def test_mnemonic_case_lower():
las = las_rs.read(
fixture("v20/sample_v20.las"),
mnemonic_case="lower",
)
for item in las.curves:
assert item.mnemonic == item.mnemonic.lower()
@pytest.mark.xfail(reason="not yet implemented")
def test_mnemonic_case_preserve():
las = las_rs.read(
fixture("v20/sample_v20.las"),
mnemonic_case="preserve",
)
mnemonics = [c.mnemonic for c in las.curves]
assert "DEPT" in mnemonics
assert "GR" in mnemonics