1
1
from collections import OrderedDict
2
+ import operator
2
3
3
4
import numpy as np
4
5
import pytest
@@ -47,8 +48,8 @@ def test_join_dict_keys():
47
48
48
49
49
50
def test_collect_dict_values ():
50
- dicts = [{'x' : 1 , 'y' : 2 , 'z' : 3 }, {'z' : 4 }]
51
- expected = [[1 , 0 ], [2 , 0 ], [3 , 4 ]]
51
+ dicts = [{'x' : 1 , 'y' : 2 , 'z' : 3 }, {'z' : 4 }, 5 ]
52
+ expected = [[1 , 0 , 5 ], [2 , 0 , 5 ], [3 , 4 , 5 ]]
52
53
collected = collect_dict_values (dicts , ['x' , 'y' , 'z' ], fill_value = 0 )
53
54
assert collected == expected
54
55
@@ -74,6 +75,52 @@ def test_apply_ufunc_identity():
74
75
assert_identical (output , dataset )
75
76
76
77
78
+ def test_apply_ufunc_two_inputs ():
79
+ array = np .array ([1 , 2 , 3 ])
80
+ variable = xr .Variable ('x' , array )
81
+ data_array = xr .DataArray (variable , [('x' , - array )])
82
+ dataset = xr .Dataset ({'y' : variable }, {'x' : - array })
83
+
84
+ zeros_array = np .zeros_like (array )
85
+ zeros_variable = xr .Variable ('x' , zeros_array )
86
+ zeros_data_array = xr .DataArray (zeros_variable , [('x' , - array )])
87
+ zeros_dataset = xr .Dataset ({'y' : zeros_variable }, {'x' : - array })
88
+
89
+ add = lambda a , b : xr .apply_ufunc (operator .add , a , b )
90
+
91
+ assert_array_equal (array , add (array , 0 ))
92
+ assert_array_equal (array , add (array , zeros_array ))
93
+ assert_array_equal (array , add (0 , array ))
94
+ assert_array_equal (array , add (zeros_array , array ))
95
+
96
+ assert_identical (variable , add (variable , 0 ))
97
+ assert_identical (variable , add (variable , zeros_array ))
98
+ assert_identical (variable , add (variable , zeros_variable ))
99
+ assert_identical (variable , add (0 , variable ))
100
+ assert_identical (variable , add (zeros_array , variable ))
101
+ assert_identical (variable , add (zeros_variable , variable ))
102
+
103
+ assert_identical (data_array , add (data_array , 0 ))
104
+ assert_identical (data_array , add (data_array , zeros_array ))
105
+ assert_identical (data_array , add (data_array , zeros_variable ))
106
+ assert_identical (data_array , add (data_array , zeros_data_array ))
107
+ assert_identical (data_array , add (0 , data_array ))
108
+ assert_identical (data_array , add (zeros_array , data_array ))
109
+ assert_identical (data_array , add (zeros_variable , data_array ))
110
+ assert_identical (data_array , add (zeros_data_array , data_array ))
111
+
112
+ assert_identical (dataset , add (dataset , 0 ))
113
+ assert_identical (dataset , add (dataset , zeros_array ))
114
+ assert_identical (dataset , add (dataset , zeros_variable ))
115
+ assert_identical (dataset , add (dataset , zeros_data_array ))
116
+ assert_identical (dataset , add (dataset , zeros_dataset ))
117
+ assert_identical (dataset , add (0 , dataset ))
118
+ assert_identical (dataset , add (zeros_array , dataset ))
119
+ assert_identical (dataset , add (zeros_variable , dataset ))
120
+ assert_identical (dataset , add (zeros_data_array , dataset ))
121
+ assert_identical (dataset , add (zeros_dataset , dataset ))
122
+
123
+
77
124
def test_apply_ufunc_two_outputs ():
78
125
array = np .arange (10 )
79
126
variable = xr .Variable ('x' , array )
0 commit comments