def test_isotope_init_str(iso_str, sym, A, m):
    """Test Isotope init with one (string) argument.

    Isotope is identified by element symbol, A, and isomer number.

    Run tests for element symbol and name, in mixed case, upper case,
    and lower case.
    """
    sym = str(sym)
    mass_number = str(A)
    if m is not None:
        if isinstance(m, int):
            mass_number += 'm{}'.format(m)
        else:
            mass_number += m
    expected = isotope.Isotope(sym, A, m)
    for name in [sym, element.element_name(sym)]:
        iso_tests = [
            name + '-' + mass_number,
            name + mass_number,
            mass_number + '-' + name,
            mass_number + name,
        ]
        for iso in iso_tests:
            for iso2 in [iso, iso.upper(), iso.lower()]:
                print('')
                print('{}-{}: {}'.format(sym, mass_number, iso2))
                i = isotope.Isotope(iso2)
                print(i)
                assert i == expected
def test_isotope_init_str_exceptions(iso_str, raises):
    """Test Isotope init exceptions with one (string) argument."""
    if raises:
        with pytest.raises(isotope.IsotopeError):
            isotope.Isotope(iso_str)
    else:
        isotope.Isotope(iso_str)
def test_isotope_equality(sym1, A1, m1, sym2, A2, m2, equal):
    """Test Isotope equality and inequality."""
    i1 = isotope.Isotope(sym1, A1, m1)
    i2 = isotope.Isotope(sym2, A2, m2)
    if equal:
        assert i1 == i2
    else:
        assert i1 != i2
def test_isotope_properties(iso_str, props):
    """Test that isotope properties are correct."""
    i = isotope.Isotope(iso_str)
    half_life, is_stable, abundance, j_pi, energy_level, mass_excess, modes = \
        props
    if not np.isinf(half_life):
        assert np.isclose(i.half_life, half_life)
    else:
        assert np.isinf(i.half_life)
    assert i.is_stable == is_stable
    if abundance is None:
        assert i.abundance is None
    else:
        assert np.isclose(i.abundance.nominal_value, abundance)
    assert i.j_pi == j_pi
    assert np.isclose(i.energy_level, energy_level)
    print('mass excess:', i.mass_excess, type(i.mass_excess))
    if mass_excess is None:
        assert i.mass_excess is None
    else:
        print('mass excess:', i.mass_excess.nominal_value)
        print('mass excess:', mass_excess)
        print(np.isclose(mass_excess, mass_excess))
        print(np.isclose(mass_excess, i.mass_excess.nominal_value))
        print(np.isclose(mass_excess, (i.mass_excess).nominal_value))
        assert np.isclose(i.mass_excess.nominal_value, mass_excess)
    assert set(i.decay_modes[0]) == set(modes[0])
    assert set(i.decay_modes[1]) == set(modes[1])
Пример #5
0
def test_isotope_init_args(iso_str, sym, A, m):
    """Test Isotope init with 2 or 3 args, depending on whether m is None."""
    sym = str(sym)
    name = element.element_name(sym)
    Z = element.element_z(sym)
    A = int(A)
    elems = [sym, sym.lower(), sym.upper(), name, name.lower(), name.upper(), Z, str(Z)]
    mass_numbers = [A, str(A)]
    if isinstance(m, int):
        if m == 0:
            m = ""
        else:
            m = "m{}".format(m)
    if m == "":
        isomer_levels = [None, "", 0]
    elif m.lower() == "m":
        isomer_levels = ["m", "M", 1]
    elif m.lower() == "m1":
        isomer_levels = ["m1", "M1"]
    else:
        isomer_levels = [m.lower(), m.upper(), int(m[1:])]
    for elem in elems:
        for mass in mass_numbers:
            for isomer in isomer_levels:
                args_list = [(elem, mass, isomer)]
                if isomer == "" or isomer is None:
                    args_list.append((elem, mass))
                for args in args_list:
                    print("")
                    print(args)
                    i = isotope.Isotope(*args)
                    print(i)
                    assert i.symbol == sym
                    assert i.A == A
                    assert i.m == m
def test_isotope_init_args_exception_noargs():
    """Test Isotope init raises exception if no arguments given."""
    with pytest.raises(isotope.IsotopeError):
        isotope.Isotope()
def test_isotope_init_args_exceptions(elem, A, m):
    """Test Isotope init raises exceptions in some cases."""
    with pytest.raises(isotope.IsotopeError):
        isotope.Isotope(elem, A, m)
def test_isotope_str(iso_str, sym, A, m):
    """Test Isotope.__str__()."""
    i = isotope.Isotope(sym, A, m)
    print(str(i), iso_str)
    assert str(i) == iso_str
def test_isotope_equality_exception():
    """Test TypeError is raised when comparing an Isotope to a non-Isotope."""
    i1 = isotope.Isotope('Tc', 99, 'm')
    with pytest.raises(TypeError):
        assert i1 == 'Tc-99m'
Пример #10
0
def test_isotope_init_args_exception_4args():
    """Test Isotope init raises exception if four arguments given."""
    with pytest.raises(isotope.IsotopeError):
        isotope.Isotope('Tc', 99, 'm', 0)
Пример #11
0
def test_isotope_init_args_exception_1arg_nonstring():
    """Test Isotope init raises exception if one non-string argument given."""
    with pytest.raises(isotope.IsotopeError):
        isotope.Isotope(32)