larry-discuss team mailing list archive
-
larry-discuss team
-
Mailing list archive
-
Message #00059
Can all larry methods handle empty larrys?
I'm making a unit test that passes an empty larry to all the larry
methods. I've tested about half the methods. So far I have found one
bug:
larry([]) == larry([])
crashes. It is fixed in my local copy. Once I've added all the
methods, I'll commit. Nose is nice. Too much work to write each test
out by hand.
Here's the unit test setup:
import numpy as np
from numpy.testing import assert_
from la import larry
def lar():
return larry([])
def arr():
return np.array([])
# Method Parameters Returns
empty_tests = [('A' , 'property', arr()),
('T' , 'property', 'use_numpy'),
('__abs__' , None , 'use_numpy'),
('__add__' , [lar()] , lar()),
('__and__' , [lar()] , lar()),
('__div__' , [lar()] , lar()),
('__eq__' , [lar()] , lar()),
('__ge__' , [lar()] , lar()),
('__gt__' , [lar()] , lar()),
('__lt__' , [lar()] , lar()),
('__mul__' , [lar()] , lar()),
('__ne__' , [lar()] , lar()),
('__neg__' , None , 'use_numpy'),
('__or__' , [lar()] , lar()),
('__pos__' , None , 'use_numpy'),
('__pow__' , [2] , lar()),
('__radd__' , [lar()] , lar()),
('__rand__' , [lar()] , lar()),
('__rdiv__' , [lar()] , 'skip'),
('__rmul__' , [lar()] , lar()),
('__ror__' , [lar()] , lar()),
('__rsub__' , [lar()] , lar()),
('__sub__' , [lar()] , lar()),
('abs' , None , lar()),
('all' , None , 'use_numpy'),
('any' , None , 'use_numpy'),
('clip' , [-1, 1] , 'use_numpy'),
('copy' , None , 'use_numpy'),
('copylabel' , None , [[]]),
('copyx' , None , arr()),
#('cov' , None , lar()), # 2d only
('cumprod' , [0] , 'use_numpy'),
('cumsum' , [0] , 'use_numpy'),
('cut_missing', [0] , lar()),
('demean' , None , lar()),
('dtype' , 'property', 'use_numpy'),
]
def test_empty():
for attr, parameters, desired in empty_tests:
if str(desired) != 'skip':
print attr
method = getattr(lar(), attr)
if parameters == 'property':
actual = method
elif parameters is None:
actual = method()
else:
actual = method(*parameters)
if str(desired) == 'use_numpy':
method = getattr(arr(), attr)
if parameters == 'property':
desired = method
elif parameters is None:
desired = method()
else:
desired = method(*parameters)
if type(desired) == np.ndarray:
desired = larry(desired)
result = actual == desired
if type(result) == larry:
result = result.all()
else:
result = np.all(result)
result &= type(actual) == type(desired)
msg = "method '" + attr + "' failed empty larry test"
yield assert_, result, msg
Follow ups