def test_subgroup():
    group = AFMGroup()
    group += load_data(data_dir / "map-data-reference-points.jpk-force-map")
    group += load_data(data_dir / "map2x2_extracted.jpk-force-map")
    group += load_data(data_dir / "flipsign_2015.05.22-15.31.49.352.jpk-force")

    exp = data_dir / "map2x2_extracted.jpk-force-map"
    subgrp = group.subgroup_with_path(path=exp)
    assert len(group) == 8
    assert len(subgrp) == 4
    assert subgrp[0].path == exp
def test_metadata_missing():
    fake_qmap_dict = {
        "test-key": ["A description for the test key", "m", float],
    }
    group = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    with mock.patch("afmformats.afm_qmap.META_FIELDS",
                    {"qmap": fake_qmap_dict}):
        with pytest.raises(ValueError,
                           match="QMap metadata missing .* test-key"):
            AFMQMap(group)
def test_meta_override():
    k = 20
    sens = .01e-6
    grp = AFMGroup(data_dir /
                   "AFM-workshop_FD_mapping_16_2018-08-01_13.07.zip",
                   meta_override={
                       "spring constant": k,
                       "sensitivity": sens
                   })
    assert grp[0].metadata["spring constant"] == k
def test_base():
    grp1 = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    grp2 = load_data(data_dir / "spot3-0192.jpk-force")

    grp3 = grp1 + grp2
    assert len(grp3) == 5
    assert len(grp2) == 1
    assert len(grp1) == 4

    grp2 += grp1
    assert len(grp3) == 5
    assert len(grp2) == 5

    for afmd in grp3:
        assert isinstance(afmd, AFMForceDistance)

    # test repr
    assert "AFMGroup" in repr(grp3)

    # test str
    assert "AFMGroup" in str(grp3)
    assert "spot3-0192.jpk-force" in str(grp3)
def test_init_with_group_meta_override_meaningless():
    group = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    with pytest.raises(ValueError, match="meaningless"):
        AFMQMap(group, meta_override={"spring constant": 1, "sensitivity": 2})
def test_init_with_group():
    group = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    qm = AFMQMap(group)
    assert qm.shape == (10, 10)
def test_meta_override_meaningless():
    with pytest.raises(ValueError, match="meaningless"):
        AFMGroup(meta_override={"spring constant": 1, "sensitivity": 2})
def test_iadd_bad_type():
    grp = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    with pytest.raises(ValueError, match="AFMGroup for iadd"):
        grp += 2
def test_enum_not_found_error():
    grp = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    with pytest.raises(KeyError, match="Could not find"):
        grp.get_enum(100)
def test_enum_multiple_error():
    grp = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    grp += load_data(data_dir / "spot3-0192.jpk-force")
    with pytest.raises(ValueError, match="Multiple curves"):
        grp.get_enum(0)
def test_enum_index():
    grp = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    afmd = grp.get_enum(2)
    assert afmd.enum == 2
    assert grp.index(afmd) == 2
def test_append_bad_type():
    grp = AFMGroup(data_dir / "map2x2_extracted.jpk-force-map")
    with pytest.raises(ValueError, match="must be an instance"):
        grp.append(2)