public void TestProxyOwner()

        {            

            Person person = new Person();

            IPerson personProxy = (IPerson)DynamicProxyFactory.Instance.CreateProxy(person, new InvocationDelegate(OwnerInvocationHandler));

            

            personProxy.Gender = "Male";

            personProxy.Name = "John Doe";

            personProxy.Interest = "Eating junkfood and watching talkshows";

            Assert.AreEqual("Name: John Doe","Name: " + person.Name);

            Assert.AreEqual("Gender: Male","Gender: " + person.Gender);

            Assert.AreEqual("Interest: Eating junkfood and watching talkshows",

                "Interest: " + person.Interest);



//            Console.WriteLine("Name: " + person.Name);

//            Console.WriteLine("Gender: " + person.Gender);

//            Console.WriteLine("Interest: " + person.Interest);

        }
        public void TestProxyOwnerException()
        {
            Person person = new Person();
            IPerson personProxy = (IPerson)DynamicProxyFactory.Instance.CreateProxy(person, new InvocationDelegate(OwnerInvocationHandler));

            personProxy.Name = "John Doe";
            personProxy.HotOrNot = 10;

            Console.WriteLine("Name: " + person.Name);
            Console.WriteLine("Rating: " + person.HotOrNot);
        }
        public void TestProxyNonOwnerException()
        {
            Person person = new Person();
            person.Name = "John Doe";

            IPerson personProxy = (IPerson)DynamicProxyFactory.Instance.CreateProxy(person, new InvocationDelegate(NonOwnerInvocationHandler));

            personProxy.Name = "John Doe";
            personProxy.Interest = "This will not display due to exception";

            Console.WriteLine("Name: " + person.Name);
            Console.WriteLine("Interest: " + person.Interest);
        }
        public void TestProxyNonOwnerSetRating()
        {
            Person person = new Person();
            person.Name = "John Doe";

            IPerson personProxy = (IPerson)DynamicProxyFactory.Instance.CreateProxy(person, new InvocationDelegate(NonOwnerInvocationHandler));

            personProxy.HotOrNot = 10;
            personProxy.HotOrNot = 5;

            Assert.AreEqual("Name: John Doe","Name: " + person.Name);
            Assert.AreEqual("Rating: 7","Rating: " + person.HotOrNot);

            //			Console.WriteLine("Name: " + person.Name);
            //			Console.WriteLine("Rating: " + person.HotOrNot);
        }