def test_cache(self): # We know for this particular seed that second and third call to the # generator will not return the same value. random = np.random.RandomState(seed=1) ns = ExpressionNamespace(self.EXPRESSIONS, {'random': random}) initial = ns.get_value('g') self.assertEqual(initial, ns.get_value('g')) self.assertEqual(initial, ns.get_value('g')) ns.reset() self.assertNotEqual(initial, ns.get_value('g'))
class TestAtomNotification(unittest.TestCase): def setUp(self): expressions = { 'a': Expr('2'), 'b': Expr('a*10'), } self.ant = ANT() self.ns = ExpressionNamespace(expressions) self.ns.observe('_locals', self.ant.mark_observed) def test_get_value_notification(self): for v in ('a', 'b'): self.ant.observed = False self.ns.get_value(v) self.assertTrue(self.ant.observed) def test_set_value_notification(self): self.ant.observed = False self.ns.set_value('c', 5) self.assertTrue(self.ant.observed) def test_get_value_notification_no_change(self): self.ant.observed = False self.ns.get_value('b') self.assertTrue(self.ant.observed) # Should not trigger notification because 'a' was already computed when # getting 'b', so there was no change in value. self.ant.observed = False self.ns.get_value('a') self.assertFalse(self.ant.observed)
def test_evaluation_override(self): ns = ExpressionNamespace(self.EXPRESSIONS) self.assertEqual(ns.get_value('c', {'a': 2}), 6) self.assertEqual(ns.get_value('a', {'a': 2}), 2)
def test_evaluation(self): ns = ExpressionNamespace(self.EXPRESSIONS) self.assertEqual(ns.get_value('c'), 2550) self.assertEqual(ns.get_value('e'), 20) self.assertEqual(ns.get_value('d.x'), 10) self.assertEqual(ns.get_value('f', {'data.channel.bar': 1.5}), 15)