def test_calibration_read_failures(): """Test miscellaneous HDF5 reading failures.""" fname = os.path.join(TEST_OUTPUTS, "calibration__read_failures.h5") cal = Calibration.from_linear([2.0, 3.0]) cal.add_points([0, 1000, 2000], [0, 1000, 2000]) # remove datasets from the file and show that read raises an error for dset_name in ["params", "expression", "domain", "range"]: cal.write(fname) with h5.open_h5(fname, "r+") as f: del f[dset_name] with pytest.raises(CalibrationError): Calibration.read(fname) # remove datasets from the file and show that read does *not* raise error for dset_name in ["points_x", "points_y"]: cal.write(fname) with h5.open_h5(fname, "r+") as f: del f[dset_name] Calibration.read(fname) # add unexpected dataset to the file and show that read raises an error cal.write(fname) with h5.open_h5(fname, "r+") as f: f.create_dataset("unexpected", data=[0, 1, 2]) with pytest.raises(CalibrationError): Calibration.read(fname)
def test_calibration_misc(): """Miscellaneous tests to increase test coverage.""" cal1 = Calibration.from_linear([2.0, 3.0]) cal2 = Calibration.from_polynomial([2.0, 3.0, 7.0]) with pytest.raises(CalibrationError): cal1 != 0 assert cal1 != cal2 # bad number of arguments with pytest.raises(CalibrationError): Calibration.from_linear([2.0]) Calibration.from_linear([2.0, 3.0]) with pytest.raises(CalibrationError): Calibration.from_linear([2.0, 3.0, 4.0]) # bad number of arguments with pytest.raises(CalibrationError): Calibration.from_polynomial([2.0]) Calibration.from_polynomial([2.0, 3.0]) Calibration.from_polynomial([2.0, 3.0, 4.0]) # bad number of arguments with pytest.raises(CalibrationError): Calibration.from_sqrt_polynomial([2.0]) Calibration.from_sqrt_polynomial([2.0, 3.0]) Calibration.from_sqrt_polynomial([2.0, 3.0, 4.0])
def make_calibration(name, args): """Make an instance of the desired Calibration type.""" attrs = {"comment": "Test of Calibration class", "name": name} if name.startswith("lin"): cal = Calibration.from_linear(*args, **attrs, domain=domain) elif name.startswith("poly"): cal = Calibration.from_polynomial(*args, **attrs, domain=domain) elif name.startswith("sqrt"): cal = Calibration.from_sqrt_polynomial(*args, **attrs, domain=domain) elif name.startswith("interp"): cal = Calibration.from_interpolation(points_x, points_y, **attrs, domain=domain) else: cal = Calibration(*args, **attrs, domain=domain) return cal