mirror of
https://github.com/wassname/catalyst.git
synced 2026-08-03 12:40:47 +08:00
ndicts are now deepcopyable.
This commit is contained in:
+28
-4
@@ -1,6 +1,8 @@
|
||||
from datetime import datetime
|
||||
import pytz
|
||||
|
||||
from copy import deepcopy
|
||||
|
||||
from zipline.utils.protocol_utils import ndict
|
||||
|
||||
def test_ndict():
|
||||
@@ -54,10 +56,32 @@ def test_ndict():
|
||||
del nd['x']
|
||||
assert not nd.has_key('x')
|
||||
assert nd.get('x') is None
|
||||
|
||||
|
||||
|
||||
|
||||
for n in xrange(1000):
|
||||
dt = datetime.utcnow().replace(tzinfo=pytz.utc)
|
||||
nd2 = ndict({"dt":dt, "otherdata":"ishere"*1000, "maybeanint":3})
|
||||
|
||||
nd2.dt2 = dt
|
||||
|
||||
nd2.dt2 = dt
|
||||
|
||||
def test_ndict_deepcopy():
|
||||
def assert_correctly_copied(orig, copy):
|
||||
assert nd == nd_dc, "Deepcopied ndict should have same keys and values."
|
||||
|
||||
nd_dc.z = 3
|
||||
assert 'z' not in nd, "'z' also added to original ndict."
|
||||
|
||||
nd_dc.y = 10
|
||||
assert nd_dc.y == 10, "value of copied ndict not correctly set."
|
||||
assert nd.y != 10, "value also set of original ndict."
|
||||
|
||||
nd = ndict({'x': 1, 'y': 2})
|
||||
nd_dc = deepcopy(nd)
|
||||
assert_correctly_copied(nd, nd_dc)
|
||||
|
||||
nd = ndict({'x':[1,2,3], 'y': {1: 1}})
|
||||
nd_dc = deepcopy(nd)
|
||||
assert_correctly_copied(nd, nd_dc)
|
||||
nd_dc.x.append(4)
|
||||
assert nd_dc.x[-1] == 4, "not correctly appended to copied."
|
||||
assert nd.x[-1] != 4, "also copied to original."
|
||||
Reference in New Issue
Block a user