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(); }
public void FreezablePerson_Test() { Person per = Freezable.MakeFreezable <Person>(); per.FirstName = "Foo"; per.LastName = "Bar"; Assert.IsTrue(Freezable.IsFreezable(per)); }
public void NotFreezablePerson_Test() { Person per = new Person { FirstName = "Foo", LastName = "Bar" }; Assert.IsFalse(Freezable.IsFreezable(per)); }
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); }
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()); }
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)); }
public void IsFreezable_should_be_true_for_objects_created_with_MakeFreezable() { var freezablePet = Freezable.MakeFreezable <Pet>(); Assert.True(Freezable.IsFreezable(freezablePet)); }
public void IsFreezable_should_be_false_for_objects_created_with_ctor() { var nonFreezablePet = new Pet(); Assert.False(Freezable.IsFreezable(nonFreezablePet)); }