File size: 4,675 Bytes
7885a28 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
import pytest
import scipy.constants as sc
from scipy.conftest import array_api_compatible
from scipy._lib._array_api_no_0d import xp_assert_equal, xp_assert_close
from numpy.testing import assert_allclose
pytestmark = [array_api_compatible, pytest.mark.usefixtures("skip_xp_backends")]
skip_xp_backends = pytest.mark.skip_xp_backends
class TestConvertTemperature:
def test_convert_temperature(self, xp):
xp_assert_equal(sc.convert_temperature(xp.asarray(32.), 'f', 'Celsius'),
xp.asarray(0.0))
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]),
'celsius', 'Kelvin'),
xp.asarray([273.15, 273.15]))
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]), 'kelvin', 'c'),
xp.asarray([-273.15, -273.15]))
xp_assert_equal(sc.convert_temperature(xp.asarray([32., 32.]), 'f', 'k'),
xp.asarray([273.15, 273.15]))
xp_assert_equal(sc.convert_temperature(xp.asarray([273.15, 273.15]),
'kelvin', 'F'),
xp.asarray([32., 32.]))
xp_assert_equal(sc.convert_temperature(xp.asarray([0., 0.]), 'C', 'fahrenheit'),
xp.asarray([32., 32.]))
xp_assert_close(sc.convert_temperature(xp.asarray([0., 0.], dtype=xp.float64),
'c', 'r'),
xp.asarray([491.67, 491.67], dtype=xp.float64),
rtol=0., atol=1e-13)
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 491.67],
dtype=xp.float64),
'Rankine', 'C'),
xp.asarray([0., 0.], dtype=xp.float64), rtol=0., atol=1e-13)
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 491.67],
dtype=xp.float64),
'r', 'F'),
xp.asarray([32., 32.], dtype=xp.float64), rtol=0., atol=1e-13)
xp_assert_close(sc.convert_temperature(xp.asarray([32., 32.], dtype=xp.float64),
'fahrenheit', 'R'),
xp.asarray([491.67, 491.67], dtype=xp.float64),
rtol=0., atol=1e-13)
xp_assert_close(sc.convert_temperature(xp.asarray([273.15, 273.15],
dtype=xp.float64),
'K', 'R'),
xp.asarray([491.67, 491.67], dtype=xp.float64),
rtol=0., atol=1e-13)
xp_assert_close(sc.convert_temperature(xp.asarray([491.67, 0.],
dtype=xp.float64),
'rankine', 'kelvin'),
xp.asarray([273.15, 0.], dtype=xp.float64), rtol=0., atol=1e-13)
@skip_xp_backends(np_only=True, reason='Python list input uses NumPy backend')
def test_convert_temperature_array_like(self):
assert_allclose(sc.convert_temperature([491.67, 0.], 'rankine', 'kelvin'),
[273.15, 0.], rtol=0., atol=1e-13)
@skip_xp_backends(np_only=True, reason='Python int input uses NumPy backend')
def test_convert_temperature_errors(self, xp):
with pytest.raises(NotImplementedError, match="old_scale="):
sc.convert_temperature(1, old_scale="cheddar", new_scale="kelvin")
with pytest.raises(NotImplementedError, match="new_scale="):
sc.convert_temperature(1, old_scale="kelvin", new_scale="brie")
class TestLambdaToNu:
def test_lambda_to_nu(self, xp):
xp_assert_equal(sc.lambda2nu(xp.asarray([sc.speed_of_light, 1])),
xp.asarray([1, sc.speed_of_light]))
@skip_xp_backends(np_only=True, reason='Python list input uses NumPy backend')
def test_lambda_to_nu_array_like(self, xp):
assert_allclose(sc.lambda2nu([sc.speed_of_light, 1]),
[1, sc.speed_of_light])
class TestNuToLambda:
def test_nu_to_lambda(self, xp):
xp_assert_equal(sc.nu2lambda(xp.asarray([sc.speed_of_light, 1])),
xp.asarray([1, sc.speed_of_light]))
@skip_xp_backends(np_only=True, reason='Python list input uses NumPy backend')
def test_nu_to_lambda_array_like(self, xp):
assert_allclose(sc.nu2lambda([sc.speed_of_light, 1]),
[1, sc.speed_of_light])
|