def test_change_a(self):
     ctx = Context()
     ctx[C]
     ctx_a = ctx.apply_values({A: 2})
     import pdb
     pdb.set_trace()
     self.assertEqual(ctx_a[C], 4)
 def test_change_b(self):
     ctx = Context()
     ctx[C]
     ctx_a = ctx.apply_values({B: 3})
     self.assertEqual(ctx_a[C], 4)
     self.assertIs(A.get_origin(ctx_a), ctx)
     self.assertIs(B.get_origin(ctx_a), ctx_a)
    def test_get_origin(self):
        ctx = Context()
        self.assertEqual(ctx[D], 9)
        self.assertIs(A.get_origin(ctx), ctx)
        self.assertIs(B.get_origin(ctx), ctx)
        self.assertIs(C.get_origin(ctx), ctx)

        ctx_a = ctx.apply_values({A: 2})
        self.assertEqual(ctx_a[D], 12)
        self.assertIs(B.get_origin(ctx_a), ctx)

        ctx_b = ctx_a.apply_values({B: 3})
        self.assertEqual(ctx_b[D], 15)
        self.assertIs(A.get_origin(ctx_b), ctx_a)

        ctx_c = ctx_b.apply_values({C: 4})
        self.assertEqual(ctx_c[D], 12)
        self.assertIs(A.get_origin(ctx_c), ctx_a)
        self.assertIs(B.get_origin(ctx_c), ctx_b)
 def test_change_b(self):
     ctx = Context()
     ctx[D]
     ctx_b = ctx.apply_values({B: 3})
     self.assertEqual(ctx_b[D], 12)
     self.assertIs(A.get_origin(ctx_b), ctx)
 def test_change_a(self):
     ctx = Context()
     ctx[D]
     ctx_a = ctx.apply_values({A: 2})
     self.assertEqual(ctx_a[D], 12)
     self.assertIs(B.get_origin(ctx_a), ctx)