def test_mutate_args(self, exception): @st.cache def foo(d): d["answer"] += 1 return d["answer"] d = {"answer": 0} self.assertNotEqual(foo(d), foo(d)) exception.assert_not_called()
def test_mutate_return(self, exception): @st.cache def f(): return [0, 1] r = f() r[0] = 1 exception.assert_not_called() r2 = f() exception.assert_called() self.assertEqual(r, r2)
def test_args(self, exception): called = [False] @st.cache def f(x): called[0] = True return x self.assertFalse(called[0]) f(0) self.assertTrue(called[0]) called = [False] # Reset called f(0) self.assertFalse(called[0]) f(1) self.assertTrue(called[0]) exception.assert_not_called()