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; }); }
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 }
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 }