Example #1
0
        public void TestAccessor_DynamicAccess_InstanceMethod()
        {
            var testClass = new PrivateTestClass();

            Assert.Equal(4, testClass.TestAccessor().Dynamic.ToStringLength(2001));
            Assert.Equal(7, testClass.TestAccessor().Dynamic.ToStringLength("Flubber"));
        }
Example #2
0
        public void TestAccessor_NamedDelegateAccess_InstanceMethod()
        {
            var           testClass = new PrivateTestClass();
            ITestAccessor accessor  = testClass.TestAccessor();

            Assert.Equal(5, accessor.CreateDelegate <ToStringLength>()("25624"));
        }
Example #3
0
        public void TestAccessor_DynamicAccess_PublicField()
        {
            var     testClass = new PrivateTestClass();
            dynamic access    = testClass.TestAccessor().Dynamic;

            // If the API is public we want to access "normally", so we prevent this.
            Assert.Throws <RuntimeBinderException>(() => access.PublicField = 1918);
        }
Example #4
0
        public void TestAccessor_DynamicAccess_InstanceProperty()
        {
            var     testClass = new PrivateTestClass();
            dynamic access    = testClass.TestAccessor().Dynamic;

            access.Long = 1970;
            Assert.Equal(1970, access.Long);
        }
Example #5
0
        public void TestAccessor_DynamicAccess_ReadOnlyInstanceField()
        {
            var     testClass = new PrivateTestClass();
            dynamic access    = testClass.TestAccessor().Dynamic;

            access._readOnlyInteger = 7;
            Assert.Equal(7, access._readOnlyInteger);
        }
Example #6
0
        public void TestAccessor_DynamicAccess_InstanceField()
        {
            var     testClass = new PrivateTestClass();
            dynamic access    = testClass.TestAccessor().Dynamic;

            access._integer = 5;
            Assert.Equal(5, access._integer);
        }
Example #7
0
        public void TestAccessor_FuncDelegateAccess_InstanceMethod()
        {
            var           testClass = new PrivateTestClass();
            ITestAccessor accessor  = testClass.TestAccessor();

            Assert.Equal(4, accessor.CreateDelegate <Func <int, int> >("ToStringLength")(2001));
            Assert.Equal(7, accessor.CreateDelegate <Func <string, int> >("ToStringLength")("Flubber"));
        }
Example #8
0
        public void TestAccessor_FuncDelegateAccess_StaticMethod()
        {
            var testClass = new PrivateTestClass();

            Assert.Equal(2000, testClass.TestAccessor().CreateDelegate <Func <int, int> >("AddOne")(1999));

            // Hit the static class version
            Assert.Equal(21, typeof(PrivateStaticTestClass).TestAccessor().CreateDelegate <Func <int, int> >("AddOne")(20));
        }
Example #9
0
        public void TestAccessor_DynamicAccess_StaticMethod()
        {
            var testClass = new PrivateTestClass();

            Assert.Equal(2, testClass.TestAccessor().Dynamic.AddOne(1));

            // Hit the static class version
            Assert.Equal(3, typeof(PrivateStaticTestClass).TestAccessor().Dynamic.AddOne(2));
        }
Example #10
0
        public void TestAccessor_DynamicAccess_ObjectInstanceField()
        {
            var           testClass = new PrivateTestClass();
            dynamic       access    = testClass.TestAccessor().Dynamic;
            List <string> list      = access._list;

            Assert.NotNull(list);
            Assert.Single(list);
            Assert.Equal("42", list[0]);
        }
Example #11
0
        public void TestAccessor_DynamicAccess_StaticProperty()
        {
            var     testClass = new PrivateTestClass();
            dynamic access    = testClass.TestAccessor().Dynamic;

            access.Int = 1989;
            Assert.Equal(1989, access.Int);

            // Now try without an instance
            access     = typeof(PrivateTestClass).TestAccessor().Dynamic;
            access.Int = 1988;
            Assert.Equal(1988, access.Int);

            // Try the static class version
            access     = typeof(PrivateStaticTestClass).TestAccessor().Dynamic;
            access.Int = 1991;
            Assert.Equal(1991, access.Int);
        }
Example #12
0
        public void TestAccessor_DynamicAccess_StaticField()
        {
            // Don't need to create an instance to access a static, can
            // use typeof instead
            dynamic access = typeof(PrivateTestClass).TestAccessor().Dynamic;

            access.s_integer = 16;
            Assert.Equal(16, access.s_integer);

            // Attempt using an instance as well
            var testClass = new PrivateTestClass();

            access           = testClass.TestAccessor().Dynamic;
            access.s_integer = 18;
            Assert.Equal(18, access.s_integer);

            // Try the static class version
            access           = typeof(PrivateStaticTestClass).TestAccessor().Dynamic;
            access.s_integer = 21;
            Assert.Equal(21, access.s_integer);
        }