public static void TestAssignment()
        {
            var context = new ExecutionContext(new Python3Calculator());
            var foo = new Variable("foo", context);
            var bar = new Variable("bar", context);
            var boolean = new Literal(false);
            var intNumber = new Literal(3);
            var floatNumber = new Literal(3.0f);

            context.Assign(foo, new Literal(3));
            AssertEquals(foo.AsLiteral(), new Literal(3));
            AssertEquals(foo.AsValue(), 3);

            context.Assign(bar, new Literal(3));
            AssertEquals(bar.AsLiteral(), new Literal(3));
            AssertEquals(bar.AsValue(), 3);

            context.Assign(bar, new Literal(5));
            context.Assign(foo, bar);
            AssertEquals(foo.AsLiteral(), new Literal(5));
            AssertEquals(foo.AsValue(), 5);
            AssertEquals(bar.AsLiteral(), new Literal(5));
            AssertEquals(bar.AsValue(), 5);

            AssertException<InvalidOperationException>(() => context.Assign(boolean, foo));
            AssertException<InvalidOperationException>(() => context.Assign(intNumber, foo));
            AssertException<InvalidOperationException>(() => context.Assign(floatNumber, foo));
        }