public void Frozen_object_should_throw_ObjectFreezenException_when_trying_to_set_a_property() { var pet = Freezable.MakeFreezable <Pet>(); pet.Age = 3; Freezable.Freeze(pet); Assert.IsTrue(Freezable.IsFrozen(pet)); Assert.Throws <ObjectFreezenException>(() => pet.Name = "This should throw"); }
public void Freezable_should_not_intercept_normal_methods() { var pet = Freezable.MakeFreezable <Pet>(); Freezable.Freeze(pet); Assert.IsTrue(Freezable.IsFrozen(pet)); var dummy = pet.ToString(); // not intercepted var interceptedMethodsCount = GetInterceptedMethodsCountFor <FreezableInterceptor>(pet); Assert.AreEqual(0, interceptedMethodsCount); }
public void Freezable_should_work_normally() { var rex = Freezable.MakeFreezable <Pet>(); rex.Name = "Rex"; rex.Age += 50; Assert.AreEqual(50, rex.Age); rex.Deceased = true; Freezable.Freeze(rex); Assert.IsTrue(Freezable.IsFrozen(rex)); try { rex.Age++; Assert.Fail("rex is frozen!!!"); } catch (ObjectFreezenException) { Console.WriteLine("Oops. it's frozen. Can't change that anymore."); } }