Esempio n. 1
0
        public static void Main(string[] args)
        {
            var rex = Freezable.MakeFreezable <Pet>();

            rex.DataReturn();
            rex.Name = "Rex";
            Console.WriteLine(Freezable.IsFreezable(rex)
                ? "Rex is freezable!"
                : "Rex is not freezable. Something is not working");
            Console.WriteLine(rex.ToString());
            Console.WriteLine("Add 50 years");
            rex.Age += 50;
            Console.WriteLine("Age: {0}", rex.Age);
            rex.Deceased = true;

            Console.WriteLine("Deceased: {0}", rex.Deceased);
            Freezable.Freeze(rex);
            try
            {
                rex.Age++;
            }
            catch (ObjectFrozenException ex)
            {
                Console.WriteLine("Oups. it's frozen. Can't change that anymore");
            }
            Console.WriteLine("--- press enter to close");
            Console.ReadLine();
        }
Esempio n. 2
0
        public void FreezablePerson_Test()
        {
            Person per = Freezable.MakeFreezable <Person>();

            per.FirstName = "Foo";
            per.LastName  = "Bar";

            Assert.IsTrue(Freezable.IsFreezable(per));
        }
Esempio n. 3
0
        public void NotFreezablePerson_Test()
        {
            Person per = new Person
            {
                FirstName = "Foo",
                LastName  = "Bar"
            };

            Assert.IsFalse(Freezable.IsFreezable(per));
        }
Esempio n. 4
0
        public void NotFreezablePersonRegister_Test_Fail()
        {
            Person per = new ProxyGenerator().CreateClassProxy <Person>();

            per.FirstName = "Foo";
            per.LastName  = "Bar";

            // by the current implementation the object have to be registered before it can be recognized as a freezable!
            Assert.IsFalse(Freezable.IsFreezable(per));

            Assert.IsFalse(Freezable.RegisterFreezable(per));

            Assert.IsFalse(Freezable.IsFreezable(per));
        }
        private static int GetInterceptedMethodsCountFor <TInterceptor>(object obj)
            where TInterceptor : IInterceptor, ICountable
        {
            Assert.IsTrue(Freezable.IsFreezable(obj));

            var hack = obj as IProxyTargetAccessor;

            Assert.IsNotNull(hack);
            var interceptor =
                hack.GetInterceptors().Where(i => i is TInterceptor).Single() as ICountable;

            log.Debug("TInterceptor:{0}, Interceptor instance:{1}", typeof(TInterceptor).Name, interceptor.GetType().Name);
            return(interceptor.Count);
        }
Esempio n. 6
0
        public void RemoveInterceptorAtRuntime_Test()
        {
            Person per = new ProxyGenerator().CreateClassProxy <Person>(new FreezableInterceptor());

            per.FirstName = "Foo";
            per.LastName  = "Bar";

            Assert.IsTrue(Freezable.RegisterFreezable(per));

            Assert.IsTrue(Freezable.IsFreezable(per));

            Assert.AreEqual(1, ProxyHelper.GetInterceptorsField(per).Count());

            ProxyHelper.ExcudeInterceptors(per, typeof(FreezableInterceptor));

            Assert.AreEqual(0, ProxyHelper.GetInterceptorsField(per).Count());
        }
Esempio n. 7
0
        public void AddInterceptorAtRuntime_Test()
        {
            Person per = new ProxyGenerator().CreateClassProxy <Person>();

            per.FirstName = "Foo";
            per.LastName  = "Bar";

            // by the current implementation the object have to be registered before it can be recognized as a freezable!
            Assert.IsFalse(Freezable.IsFreezable(per));

            Assert.IsFalse(Freezable.RegisterFreezable(per));

            ProxyHelper.AddInterceptor <FreezableInterceptor>(per);

            Assert.IsTrue(Freezable.RegisterFreezable(per));

            Assert.IsTrue(Freezable.IsFreezable(per));
        }
Esempio n. 8
0
        public void IsFreezable_should_be_true_for_objects_created_with_MakeFreezable()
        {
            var freezablePet = Freezable.MakeFreezable <Pet>();

            Assert.True(Freezable.IsFreezable(freezablePet));
        }
Esempio n. 9
0
        public void IsFreezable_should_be_false_for_objects_created_with_ctor()
        {
            var nonFreezablePet = new Pet();

            Assert.False(Freezable.IsFreezable(nonFreezablePet));
        }