import pytest import os import numpy as np import cristallina.utils as utils from cristallina.utils import ROI, print_run_info, heuristic_extract_pgroup, gauss, find_nearest, xray_transmission,stand_table def test_print(capsys): print_run_info(185, base_path="tests/data/p20841/raw/") captured = capsys.readouterr() assert "17259343145" in captured.out assert "scan_parameters" in captured.out def test_collect_metadata(): test_pgroup_dir = "tests/data/p20841" df = utils.collect_runs_metadata(test_pgroup_dir) assert df.iloc[1]["user_tag"] == "PMS, Magnet at 78K, 400V excitation" assert df.iloc[1]["start_pulseid"] == 17358560870 def test_ROI(): """API Tests""" r = ROI(left=1, right=2, top=4, bottom=2) assert r.width == 1 assert r.height == 2 assert r.name is not None def test_extract_pgroup(): os.chdir("tests/data/p20841/raw/") assert heuristic_extract_pgroup() == '20841' def test_gauss(): # Test a random Gauss value and check whether the value didn't change in time assert gauss(1.5,2.7,7,4.33,3) == 7.186044070987355 def test_find_nearest(): # Make an array of 1 to 100 and check that the nearest index is the value a = np.linspace(0,99,100) assert find_nearest(a,10.1) == 10 def test_xray_transmission(): T = xray_transmission(9000, 100e-6, material = 'Si') assert T == 0.342385039732607 # This test can only be run localy (github has no access to /sf/cristallina), therefore it's commented out. # def test_stand_table(): # # Load run from a p-group where we have saved the stand table. First run recorded was number 27, so check that. # table = stand_table(21563) # assert table['run'][0] == 27