forked from pyproj4/pyproj
-
Notifications
You must be signed in to change notification settings - Fork 0
/
test_utils.py
62 lines (45 loc) · 1.67 KB
/
test_utils.py
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
from array import array
import numpy
import pytest
from pandas import Series
from xarray import DataArray
from pyproj.utils import DataType, _copytobuffer, _copytobuffer_return_scalar
@pytest.mark.parametrize("in_data", [numpy.array(1), 1])
def test__copytobuffer_return_scalar(in_data):
assert _copytobuffer_return_scalar(in_data) == (array("d", [1]), DataType.FLOAT)
def test__copytobuffer_return_scalar__invalid():
with pytest.raises(TypeError):
_copytobuffer_return_scalar("invalid")
@pytest.mark.parametrize(
"in_data, data_type",
[
(numpy.array(1), DataType.FLOAT),
(DataArray(numpy.array(1)), DataType.FLOAT),
(1, DataType.FLOAT),
([1], DataType.LIST),
((1,), DataType.TUPLE),
],
)
def test__copytobuffer(in_data, data_type):
assert _copytobuffer(in_data) == (array("d", [1]), data_type)
@pytest.mark.parametrize(
"in_arr", [numpy.array([1]), DataArray(numpy.array([1])), Series(numpy.array([1]))]
)
def test__copytobuffer__numpy_array(in_arr):
assert _copytobuffer(in_arr) == (
in_arr.astype("d").__array__(),
DataType.ARRAY,
)
def test__copytobuffer__numpy_masked_array():
in_arr = numpy.ma.array([1])
out_arr, dtype = _copytobuffer(in_arr)
assert isinstance(out_arr, numpy.ma.MaskedArray)
def test__copytobuffer__fortran_order():
data = numpy.ones((2, 4), dtype=numpy.float64, order="F")
converted_data, dtype = _copytobuffer(data)
assert data.flags.f_contiguous
assert not converted_data.flags.f_contiguous
assert converted_data.flags.c_contiguous
def test__copytobuffer__invalid():
with pytest.raises(TypeError):
_copytobuffer("invalid")