DEV: Add expect_dimensions preprocessor.

This commit is contained in:
Scott Sanderson
2016-03-25 15:11:18 -04:00
parent b85eb36da8
commit 1245552340
2 changed files with 80 additions and 1 deletions
+37 -1
View File
@@ -6,12 +6,13 @@ from types import FunctionType
from unittest import TestCase
from nose_parameterized import parameterized
from numpy import arange, dtype
from numpy import arange, array, dtype
import pytz
from six import PY3
from zipline.utils.preprocess import call, preprocess
from zipline.utils.input_validation import (
expect_dimensions,
ensure_timezone,
expect_element,
expect_dtypes,
@@ -367,3 +368,38 @@ class PreprocessTestCase(TestCase):
with self.assertRaises(TypeError) as e:
f('a')
self.assertIs(e.exception, error)
def test_expect_dimensions(self):
@expect_dimensions(x=2)
def foo(x, y):
return x[0, 0]
self.assertEqual(foo(arange(1).reshape(1, 1), 10), 0)
with self.assertRaises(ValueError) as e:
foo(arange(1), 1)
errmsg = str(e.exception)
expected = (
"{qualname}() expected a 2-D array for argument 'x', but got"
" a 1-D array instead.".format(qualname=qualname(foo))
)
self.assertEqual(errmsg, expected)
with self.assertRaises(ValueError) as e:
foo(arange(1).reshape(1, 1, 1), 1)
errmsg = str(e.exception)
expected = (
"{qualname}() expected a 2-D array for argument 'x', but got"
" a 3-D array instead.".format(qualname=qualname(foo))
)
self.assertEqual(errmsg, expected)
with self.assertRaises(ValueError) as e:
foo(array(0), 1)
errmsg = str(e.exception)
expected = (
"{qualname}() expected a 2-D array for argument 'x', but got"
" a scalar instead.".format(qualname=qualname(foo))
)
self.assertEqual(errmsg, expected)