예제 #1
0
        public void TestMixedAccess()
        {
            TypeAccessor acc0 = TypeAccessor.Create(typeof(MixedAccess)),
                         acc1 = TypeAccessor.Create(typeof(MixedAccess), false),
                         acc2 = TypeAccessor.Create(typeof(MixedAccess), true);

            Assert.Same(acc0, acc1);
            Assert.NotSame(acc0, acc2);

            var obj = new MixedAccess();

            Assert.Equal(2, acc0[obj, "Foo"]);
            Assert.Equal(2, acc2[obj, "Foo"]);
            Assert.Equal(2, acc2[obj, "Bar"]);

            acc0[obj, "Bar"] = 3;
            Assert.Equal(3, acc2[obj, "Bar"]);
            acc2[obj, "Bar"] = 4;
            Assert.Equal(4, acc2[obj, "Bar"]);
            acc2[obj, "Foo"] = 5;
            Assert.Equal(5, acc0[obj, "Foo"]);

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                int i = (int)acc0[obj, "Bar"];
            });
            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                acc0[obj, "Foo"] = 6;
            });
        }
예제 #2
0
        public void TestMixedAccess()
        {
            TypeAccessor acc0 = TypeAccessor.Create(typeof(MixedAccess)),
                         acc1 = TypeAccessor.Create(typeof(MixedAccess), false),
                         acc2 = TypeAccessor.Create(typeof(MixedAccess), true);

            Assert.Same(acc0, acc1);
            Assert.NotSame(acc0, acc2);

            var obj = new MixedAccess();

            Assert.Equal(2, acc0[obj, "Foo"]);
            Assert.Equal(2, acc2[obj, "Foo"]);
            Assert.Equal(2, acc2[obj, "Bar"]);

            acc0[obj, "Bar"] = 3;
            Assert.Equal(3, acc2[obj, "Bar"]);
            acc2[obj, "Bar"] = 4;
            Assert.Equal(4, acc2[obj, "Bar"]);
            acc2[obj, "Foo"] = 5;
            Assert.Equal(5, acc0[obj, "Foo"]);

            try
            {
                int i = (int)acc0[obj, "Bar"];
                Assert.True(false);
            }
            catch (ArgumentOutOfRangeException)
            { } // fine
            try
            {
                acc0[obj, "Foo"] = 6;
                Assert.True(false);
            }
            catch (ArgumentOutOfRangeException)
            { } // fine
        }
예제 #3
0
        public void TestMixedAccess()
        {
            TypeAccessor acc0 = TypeAccessor.Create(typeof(MixedAccess)),
                         acc1 = TypeAccessor.Create(typeof(MixedAccess), false),
                         acc2 = TypeAccessor.Create(typeof(MixedAccess), true);

            Assert.AreSame(acc0, acc1);
            Assert.AreNotSame(acc0, acc2);

            var obj = new MixedAccess();
            Assert.AreEqual(2, acc0[obj, "Foo"]);
            Assert.AreEqual(2, acc2[obj, "Foo"]);
            Assert.AreEqual(2, acc2[obj, "Bar"]);

            acc0[obj, "Bar"] = 3;
            Assert.AreEqual(3, acc2[obj, "Bar"]);
            acc2[obj, "Bar"] = 4;
            Assert.AreEqual(4, acc2[obj, "Bar"]);
            acc2[obj, "Foo"] = 5;
            Assert.AreEqual(5, acc0[obj, "Foo"]);

            try
            {
                int i = (int)acc0[obj, "Bar"];
                Assert.Fail();
            }
            catch (ArgumentOutOfRangeException)
            { } // fine
            try
            {
                acc0[obj, "Foo"] = 6;
                Assert.Fail();
            }
            catch (ArgumentOutOfRangeException)
            { } // fine
        }