Chris@87
|
1 from __future__ import division, absolute_import, print_function
|
Chris@87
|
2
|
Chris@87
|
3 import numpy.core as nx
|
Chris@87
|
4 import numpy.lib.ufunclike as ufl
|
Chris@87
|
5 from numpy.testing import (
|
Chris@87
|
6 run_module_suite, TestCase, assert_, assert_equal, assert_array_equal
|
Chris@87
|
7 )
|
Chris@87
|
8
|
Chris@87
|
9
|
Chris@87
|
10 class TestUfunclike(TestCase):
|
Chris@87
|
11
|
Chris@87
|
12 def test_isposinf(self):
|
Chris@87
|
13 a = nx.array([nx.inf, -nx.inf, nx.nan, 0.0, 3.0, -3.0])
|
Chris@87
|
14 out = nx.zeros(a.shape, bool)
|
Chris@87
|
15 tgt = nx.array([True, False, False, False, False, False])
|
Chris@87
|
16
|
Chris@87
|
17 res = ufl.isposinf(a)
|
Chris@87
|
18 assert_equal(res, tgt)
|
Chris@87
|
19 res = ufl.isposinf(a, out)
|
Chris@87
|
20 assert_equal(res, tgt)
|
Chris@87
|
21 assert_equal(out, tgt)
|
Chris@87
|
22
|
Chris@87
|
23 def test_isneginf(self):
|
Chris@87
|
24 a = nx.array([nx.inf, -nx.inf, nx.nan, 0.0, 3.0, -3.0])
|
Chris@87
|
25 out = nx.zeros(a.shape, bool)
|
Chris@87
|
26 tgt = nx.array([False, True, False, False, False, False])
|
Chris@87
|
27
|
Chris@87
|
28 res = ufl.isneginf(a)
|
Chris@87
|
29 assert_equal(res, tgt)
|
Chris@87
|
30 res = ufl.isneginf(a, out)
|
Chris@87
|
31 assert_equal(res, tgt)
|
Chris@87
|
32 assert_equal(out, tgt)
|
Chris@87
|
33
|
Chris@87
|
34 def test_fix(self):
|
Chris@87
|
35 a = nx.array([[1.0, 1.1, 1.5, 1.8], [-1.0, -1.1, -1.5, -1.8]])
|
Chris@87
|
36 out = nx.zeros(a.shape, float)
|
Chris@87
|
37 tgt = nx.array([[1., 1., 1., 1.], [-1., -1., -1., -1.]])
|
Chris@87
|
38
|
Chris@87
|
39 res = ufl.fix(a)
|
Chris@87
|
40 assert_equal(res, tgt)
|
Chris@87
|
41 res = ufl.fix(a, out)
|
Chris@87
|
42 assert_equal(res, tgt)
|
Chris@87
|
43 assert_equal(out, tgt)
|
Chris@87
|
44 assert_equal(ufl.fix(3.14), 3)
|
Chris@87
|
45
|
Chris@87
|
46 def test_fix_with_subclass(self):
|
Chris@87
|
47 class MyArray(nx.ndarray):
|
Chris@87
|
48 def __new__(cls, data, metadata=None):
|
Chris@87
|
49 res = nx.array(data, copy=True).view(cls)
|
Chris@87
|
50 res.metadata = metadata
|
Chris@87
|
51 return res
|
Chris@87
|
52
|
Chris@87
|
53 def __array_wrap__(self, obj, context=None):
|
Chris@87
|
54 obj.metadata = self.metadata
|
Chris@87
|
55 return obj
|
Chris@87
|
56
|
Chris@87
|
57 a = nx.array([1.1, -1.1])
|
Chris@87
|
58 m = MyArray(a, metadata='foo')
|
Chris@87
|
59 f = ufl.fix(m)
|
Chris@87
|
60 assert_array_equal(f, nx.array([1, -1]))
|
Chris@87
|
61 assert_(isinstance(f, MyArray))
|
Chris@87
|
62 assert_equal(f.metadata, 'foo')
|
Chris@87
|
63
|
Chris@87
|
64 if __name__ == "__main__":
|
Chris@87
|
65 run_module_suite()
|