blob: 87d0a9ebf795bb6f357d62716e9114c0ed7d5755 [file] [log] [blame]
#!/usr/bin/env python
#
# Author: Mike McKerns (mmckerns @caltech and @uqfoundation)
# Author: Anirudh Vegesana (avegesan@cs.stanford.edu)
# Copyright (c) 2021-2022 The Uncertainty Quantification Foundation.
# License: 3-clause BSD. The full license text is available at:
# - https://github.com/uqfoundation/dill/blob/master/LICENSE
import dill
from dill._dill import OLD310, MAPPING_PROXY_TRICK, DictProxyType
def test_dictproxy():
assert dill.copy(DictProxyType({'a': 2}))
def test_dictviews():
x = {'a': 1}
assert dill.copy(x.keys())
assert dill.copy(x.values())
assert dill.copy(x.items())
def test_dictproxy_trick():
if not OLD310 and MAPPING_PROXY_TRICK:
x = {'a': 1}
all_views = (x.values(), x.items(), x.keys(), x)
seperate_views = dill.copy(all_views)
new_x = seperate_views[-1]
new_x['b'] = 2
new_x['c'] = 1
assert len(new_x) == 3 and len(x) == 1
assert len(seperate_views[0]) == 3 and len(all_views[0]) == 1
assert len(seperate_views[1]) == 3 and len(all_views[1]) == 1
assert len(seperate_views[2]) == 3 and len(all_views[2]) == 1
assert dict(all_views[1]) == x
assert dict(seperate_views[1]) == new_x
if __name__ == '__main__':
test_dictproxy()
test_dictviews()
test_dictproxy_trick()