def test_thermoml_from_files():
    """A test to ensure that ThermoML archive files can be loaded from local sources."""

    data_set = ThermoMLDataSet.from_file(
        get_data_filename("properties/single_density.xml"),
        get_data_filename("properties/single_dielectric.xml"),
        get_data_filename("properties/single_enthalpy_mixing.xml"),
    )

    assert data_set is not None
    assert len(data_set) == 3

    # Make sure the DOI was found from the enthalpy file
    for physical_property in data_set:

        if isinstance(physical_property, EnthalpyOfMixing):

            assert physical_property.source.doi != UNDEFINED
            assert physical_property.source.doi == "10.1016/j.jct.2008.12.004"

        else:
            assert physical_property.source.doi == ""
            assert physical_property.source.reference != UNDEFINED

    data_set = ThermoMLDataSet.from_file("dummy_filename")
    assert data_set is None
def test_thermoml_mole_constraints():
    """A collection of tests to ensure that the Mole fraction constraint is
    implemented correctly alongside solvent constraints."""

    # Mole fraction
    data_set = ThermoMLDataSet.from_file(
        get_data_filename("test/properties/mole.xml"))

    assert data_set is not None
    assert len(data_set) > 0

    # Mole fraction + Solvent: Mass fraction
    data_set = ThermoMLDataSet.from_file(
        get_data_filename("test/properties/mole_mass.xml"))

    assert data_set is not None
    assert len(data_set) > 0

    # Mole fraction + Solvent: Mole fraction
    data_set = ThermoMLDataSet.from_file(
        get_data_filename("test/properties/mole_mole.xml"))

    assert data_set is not None
    assert len(data_set) > 0

    # Mole fraction + Solvent: Molality
    data_set = ThermoMLDataSet.from_file(
        get_data_filename("test/properties/mole_molality.xml"))

    assert data_set is not None
    assert len(data_set) > 0
def test_thermoml_from_doi():
    """A test to ensure that ThermoML archive files can be loaded from a doi."""

    data_set = ThermoMLDataSet.from_doi("10.1016/j.jct.2016.10.001")

    assert data_set is not None
    assert len(data_set) > 0

    data_set = ThermoMLDataSet.from_doi("10.1016/j.jct.2016.12.009x")
    assert data_set is None
def test_thermoml_from_url():
    """A test to ensure that ThermoML archive files can be loaded from a url."""

    data_set = ThermoMLDataSet.from_url(
        "https://trc.nist.gov/ThermoML/10.1021/acs.jced.6b00916.xml")
    assert data_set is not None

    assert len(data_set) > 0

    data_set = ThermoMLDataSet.from_url(
        "https://trc.nist.gov/ThermoML/10.1021/acs.jced.6b00916.xmld")
    assert data_set is None