mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-11 11:16:15 +08:00
TST: add test for 1d array overwrite
This commit is contained in:
@@ -22,6 +22,7 @@ from zipline.lib.adjustment import (
|
||||
Datetime64Overwrite,
|
||||
Float64Multiply,
|
||||
Float64Overwrite,
|
||||
Float641DArrayOverwrite,
|
||||
ObjectOverwrite,
|
||||
)
|
||||
from zipline.lib.adjusted_array import AdjustedArray, NOMASK
|
||||
@@ -304,6 +305,105 @@ def _gen_overwrite_adjustment_cases(name,
|
||||
)
|
||||
|
||||
|
||||
def _gen_overwrite_1d_array_adjustment_case():
|
||||
"""
|
||||
Generate test cases for overwrite adjustments.
|
||||
|
||||
The algorithm used here is the same as the one used above for
|
||||
multiplicative adjustments. The only difference is the semantics of how
|
||||
the adjustments are expected to modify the arrays.
|
||||
|
||||
This is parameterized on `make_input` and `make_expected_output` functions,
|
||||
which take 2-D lists of values and transform them into desired input/output
|
||||
arrays. We do this so that we can easily test both vanilla numpy ndarrays
|
||||
and our own LabelArray class for strings.
|
||||
"""
|
||||
|
||||
adjustments = {}
|
||||
buffer_as_of = [None] * 6
|
||||
baseline = as_dtype(float64_dtype, [[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
buffer_as_of[0] = as_dtype(float64_dtype, [[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
# Note that row indices are inclusive!
|
||||
adjustments[1] = [
|
||||
Float641DArrayOverwrite(array([0]),
|
||||
array([0]),
|
||||
array([0]),
|
||||
array([0]),
|
||||
as_dtype(float64_dtype, array([1])))
|
||||
]
|
||||
buffer_as_of[1] = as_dtype(float64_dtype, [[1, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
# No adjustment at index 2.
|
||||
buffer_as_of[2] = buffer_as_of[1]
|
||||
|
||||
adjustments[3] = [
|
||||
Float641DArrayOverwrite(array([0, 2, 1]),
|
||||
array([1, 2, 2]),
|
||||
array([0, 0, 1]),
|
||||
array([0, 0, 1]),
|
||||
as_dtype(float64_dtype, array([4, 1, 3])))
|
||||
]
|
||||
buffer_as_of[3] = as_dtype(float64_dtype, [[4, 2, 2],
|
||||
[4, 3, 2],
|
||||
[1, 3, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
adjustments[4] = [
|
||||
Float641DArrayOverwrite(array([0]),
|
||||
array([3]),
|
||||
array([2]),
|
||||
array([2]),
|
||||
as_dtype(float64_dtype, array([5])))
|
||||
]
|
||||
buffer_as_of[4] = as_dtype(float64_dtype, [[4, 2, 5],
|
||||
[4, 3, 5],
|
||||
[1, 3, 5],
|
||||
[2, 2, 5],
|
||||
[2, 2, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
adjustments[5] = [
|
||||
Float641DArrayOverwrite(array([0, 2]),
|
||||
array([4, 2]),
|
||||
array([1, 2]),
|
||||
array([1, 2]),
|
||||
as_dtype(float64_dtype, array([6, 7]))),
|
||||
]
|
||||
buffer_as_of[5] = as_dtype(float64_dtype, [[4, 6, 5],
|
||||
[4, 6, 5],
|
||||
[1, 6, 7],
|
||||
[2, 6, 5],
|
||||
[2, 6, 2],
|
||||
[2, 2, 2]])
|
||||
|
||||
return _gen_expectations(
|
||||
baseline,
|
||||
default_missing_value_for_dtype(float64_dtype),
|
||||
adjustments,
|
||||
buffer_as_of,
|
||||
nrows=6,
|
||||
)
|
||||
|
||||
|
||||
def _gen_expectations(baseline,
|
||||
missing_value,
|
||||
adjustments,
|
||||
@@ -442,6 +542,7 @@ class AdjustedArrayTestCase(TestCase):
|
||||
datetime64ns_dtype,
|
||||
),
|
||||
),
|
||||
_gen_overwrite_1d_array_adjustment_case(),
|
||||
# There are six cases here:
|
||||
# Using np.bytes/np.unicode/object arrays as inputs.
|
||||
# Passing np.bytes/np.unicode/object arrays to LabelArray,
|
||||
|
||||
Reference in New Issue
Block a user