diff --git a/IPython/parallel/tests/test_view.py b/IPython/parallel/tests/test_view.py index 866caf3..26f9f0a 100644 --- a/IPython/parallel/tests/test_view.py +++ b/IPython/parallel/tests/test_view.py @@ -627,4 +627,52 @@ class TestView(ClusterTestCase, ParametricTestCase): self.assertTrue(all(isinstance(d, dict) for d in ar.data)) ar.get(5) self.assertEqual(ar.data, [dict(i=4)] * len(ar)) + + def test_can_list_arg(self): + """args in lists are canned""" + view = self.client[-1] + view['a'] = 128 + rA = pmod.Reference('a') + ar = view.apply_async(lambda x: x, [rA]) + r = ar.get(5) + self.assertEqual(r, [128]) + + def test_can_dict_arg(self): + """args in dicts are canned""" + view = self.client[-1] + view['a'] = 128 + rA = pmod.Reference('a') + ar = view.apply_async(lambda x: x, dict(foo=rA)) + r = ar.get(5) + self.assertEqual(r, dict(foo=128)) + + def test_can_list_kwarg(self): + """kwargs in lists are canned""" + view = self.client[-1] + view['a'] = 128 + rA = pmod.Reference('a') + ar = view.apply_async(lambda x=5: x, x=[rA]) + r = ar.get(5) + self.assertEqual(r, [128]) + + def test_can_dict_kwarg(self): + """kwargs in dicts are canned""" + view = self.client[-1] + view['a'] = 128 + rA = pmod.Reference('a') + ar = view.apply_async(lambda x=5: x, dict(foo=rA)) + r = ar.get(5) + self.assertEqual(r, dict(foo=128)) + + def test_map_ref(self): + """view.map works with references""" + view = self.client[:] + ranks = sorted(self.client.ids) + view.scatter('rank', ranks, flatten=True) + rrank = pmod.Reference('rank') + + amr = view.map_async(lambda x: x*2, [rrank] * len(view)) + drank = amr.get(5) + self.assertEqual(drank, [ r*2 for r in ranks ]) +