- Notifications
You must be signed in to change notification settings - Fork 21
Closed
Milestone
Description
Problem
Originally posted by @sbillinge in #255 (comment)
The majority of code has been listing "cases", but we can further scale our tests by grouping them:
From:
@pytest.mark.parametrize("org_do_args, target_do_args, scale_inputs, expected", [# Case 1: same x-array and y-array, check offset ({"xarray": np.array([10, 15, 25, 30, 60, 140]),"yarray": np.array([2, 3, 4, 5, 6, 7]),"xtype": "tth","wavelength": 2*np.pi, },{"xarray": np.array([10, 15, 25, 30, 60, 140]),"yarray": np.array([2, 3, 4, 5, 6, 7]),"xtype": "tth","wavelength": 2*np.pi, },{"q": None,"tth": 60,"d": None,"offset": 2.1, },{"xtype": "tth", "yarray": np.array([4.1, 5.1, 6.1, 7.1, 8.1, 9.1])}, ),# Case 2: same length x-arrays with exact x-value match ({"xarray": np.array([10, 15, 25, 30, 60, 140]),"yarray": np.array([10, 20, 25, 30, 60, 100]),"xtype": "tth","wavelength": 2*np.pi, },{"xarray": np.array([10, 20, 25, 30, 60, 140]),"yarray": np.array([2, 3, 4, 5, 6, 7]),"xtype": "tth","wavelength": 2*np.pi, },{"q": None,"tth": 60,"d": None,"offset": 0, },{"xtype": "tth", "yarray": np.array([1, 2, 2.5, 3, 6, 10])}, ),# Case 3: same length x-arrays with approximate x-value match ({"xarray": np.array([0.12, 0.24, 0.31, 0.4]),"yarray": np.array([10, 20, 40, 60]),"xtype": "q","wavelength": 2*np.pi, },{"xarray": np.array([0.14, 0.24, 0.31, 0.4]),"yarray": np.array([1, 3, 4, 5]),"xtype": "q","wavelength": 2*np.pi, },{"q": 0.1,"tth": None,"d": None,"offset": 0, },{"xtype": "q", "yarray": np.array([1, 2, 4, 6])}, ),# Case 4: different x-array lengths with approximate x-value match ({"xarray": np.array([10, 25, 30.1, 40.2, 61, 120, 140]),"yarray": np.array([10, 20, 30, 40, 50, 60, 100]),"xtype": "tth","wavelength": 2*np.pi, },{"xarray": np.array([20, 25.5, 32, 45, 50, 62, 100, 125, 140]),"yarray": np.array([1.1, 2, 3, 3.5, 4, 5, 10, 12, 13]),"xtype": "tth","wavelength": 2*np.pi, },{"q": None,"tth": 60,"d": None,"offset": 0, },# Case 5 Scaling factor is calculated at index = 4 (tth=61) for self and index = 5 for target (tth=62){"xtype": "tth", "yarray": np.array([1, 2, 3, 4, 5, 6, 10])}, ), ],) ...To:
@pytest.mark.parametrize("wavelength, q, expected_tth", [# Case 1: Allow empty arrays for q# 1. Empty q values, no wavelength, return empty arrays (None, np.empty((0)), np.empty((0))),# 2. Empty q values, wavelength specified, return empty arrays (4*np.pi, np.empty((0)), np.empty(0)),# Case 2: Allow wavelength to be missing.# Valid q values, no wavelength, return index array (None,np.array([0, 0.2, 0.4, 0.6, 0.8, 1]),np.array([0, 1, 2, 3, 4, 5]), ),# Case 3: Correctly specified q and wavelength# Expected tth values are 2*arcsin(q) in degrees (4*np.pi, np.array([0, 1/np.sqrt(2), 1.0]), np.array([0, 90.0, 180.0])), ],)Proposed solution
For all test functions diffpy.utils, review each test function and group test cases.
Metadata
Metadata
Assignees
Labels
No labels