def test_generate_eline_list3(): r""" ``generate_eline_list``: fails if emission line category is specified incorrectly """ with pytest.raises( RuntimeError, match="Some of the selected emission lines are incorrect"): generate_eline_list(["Fe", "W", "Ta"], incident_energy=12.0, lines=["K", "Ka"])
def test_generate_eline_list2(elements, incident_energy, lines, elines): r""" ``generate_eline_list``: explicitely select eline categories """ assert (generate_eline_list( elements, incident_energy=incident_energy, lines=lines) == elines), "Emission line list is generated incorrectly"
def test_generate_eline_list1(elements, incident_energy, elines): r""" ``generate_eline_list``: search all lines """ assert (generate_eline_list(elements, incident_energy=incident_energy) == elines ), "Emission line list is generated incorrectly"
def test_get_quant_fluor_data_dict(): """Tests for 'get_quant_fluor_data_dict': basic tests for consistensy of the returned dictionary""" for standard_data in _standard_data_sample: quant_fluor_data_dict = get_quant_fluor_data_dict(standard_data, incident_energy=12.0) # Will raise exception is schema is not satisfied jsonschema.validate(instance=quant_fluor_data_dict, schema=_xrf_quant_fluor_schema) assert quant_fluor_data_dict["name"] == standard_data[ "name"], "Dictionary element 'name' is incorrect" assert (quant_fluor_data_dict["serial"] == standard_data["serial"] ), "Dictionary element 'serial' is incorrect" assert (quant_fluor_data_dict["description"] == standard_data["description"] ), "Dictionary element 'description' is incorrect" eline_set = set() # The 'mass' is not actual mass. If elements has multiple emission lines activated, then # the mass (density) of the element will be counted multiple times. There is no # physical meaning in the computed value: it is used to verify the sum of densities in # the 'element_lines' dictionary of emission lines in 'quant_fluor_data_dict' mass_sum_expected = 0 for cmpd, mass in standard_data["compounds"].items(): em_dict = split_compound_mass(cmpd, mass) for el, ms in em_dict.items(): elines = generate_eline_list([el], incident_energy=12.0) n_elines = len(elines) if n_elines: mass_sum_expected += n_elines * ms eline_set.update(elines) eline_out_list = list(quant_fluor_data_dict["element_lines"].keys()) assert len(eline_out_list) == len( eline_set), "The number of emission lines is not as expected" assert ( set(eline_out_list) == eline_set ), "Generated object contains emission lines that are different from expected" mass_sum = sum([ _["density"] for _ in quant_fluor_data_dict["element_lines"].values() ]) assert ( mass_sum == mass_sum_expected ), "The total mass (density) of the components is different from expected"