Example #1
0
        public void VarConstruction()
        {

            object s = "";
            ValuePointer var = new ValuePointer(() => s, (o) => s = o, null, false);
            var.Setter(1);
            Assert.AreEqual(1, s);
            Assert.IsNull(var.DeclaredType);
            Assert.IsFalse(var.IsDynamic);

            var.UpdateToCurrentType();
            Assert.IsNotNull(var.DeclaredType);
            try { var.Setter("Var.Setter"); Assert.Fail(); } catch { }
        }
Example #2
0
        public void DynamicConstruction()
        {
            object s = "";
            ValuePointer dynamic = new ValuePointer(() => s, (o) => s = o, null, true);
            Assert.IsTrue(dynamic.IsDynamic);
            Assert.IsNull(dynamic.DeclaredType);

            dynamic.Setter("dynamic.Setter");
            Assert.IsTrue(dynamic.IsDynamic);
            Assert.IsNull(dynamic.DeclaredType);

            dynamic.UpdateToCurrentType();
            Assert.IsTrue(dynamic.IsDynamic);

            try { dynamic.Setter(123); } catch { Assert.Fail(); }
        }
Example #3
0
        public void IncompatibleDynamicConstruction()
        {

            object s = "";
            ValuePointer incompatibleDynamic = new ValuePointer(() => s, (o) => s = o, typeof(int), true);
            Assert.IsTrue(incompatibleDynamic.IsDynamic);
            Assert.AreEqual(typeof(int), incompatibleDynamic.DeclaredType);

            incompatibleDynamic.Setter("dynamic.Setter");
            Assert.IsTrue(incompatibleDynamic.IsDynamic);

            incompatibleDynamic.UpdateToCurrentType();
            Assert.AreEqual(typeof(string), incompatibleDynamic.DeclaredType);
            Assert.IsTrue(incompatibleDynamic.IsDynamic);


            try
            {
                incompatibleDynamic.Setter(123);
                Assert.Fail();
            }
            catch { }
        }