python/test/numpy/ufunc.py

58 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python
# Copyright Jim Bosch & Ankit Daftery 2010-2012.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
import ufunc_ext
import unittest
import numpy
from numpy.testing.utils import assert_array_almost_equal
class TestUnary(unittest.TestCase):
def testScalar(self):
f = ufunc_ext.UnaryCallable()
assert_array_almost_equal(f(1.0), 2.0)
assert_array_almost_equal(f(3.0), 6.0)
def testArray(self):
f = ufunc_ext.UnaryCallable()
a = numpy.arange(5, dtype=float)
b = f(a)
assert_array_almost_equal(b, a*2.0)
c = numpy.zeros(5, dtype=float)
d = f(a,output=c)
self.assert_(c is d)
assert_array_almost_equal(d, a*2.0)
def testList(self):
f = ufunc_ext.UnaryCallable()
a = range(5)
b = f(a)
assert_array_almost_equal(b/2.0, a)
class TestBinary(unittest.TestCase):
def testScalar(self):
f = ufunc_ext.BinaryCallable()
assert_array_almost_equal(f(1.0, 3.0), 11.0)
assert_array_almost_equal(f(3.0, 2.0), 12.0)
def testArray(self):
f = ufunc_ext.BinaryCallable()
a = numpy.random.randn(5)
b = numpy.random.randn(5)
assert_array_almost_equal(f(a,b), (a*2+b*3))
c = numpy.zeros(5, dtype=float)
d = f(a,b,output=c)
self.assert_(c is d)
assert_array_almost_equal(d, a*2 + b*3)
assert_array_almost_equal(f(a, 2.0), a*2 + 6.0)
assert_array_almost_equal(f(1.0, b), 2.0 + b*3)
if __name__=="__main__":
unittest.main()