public void MockAClassWithFinalizer()
        {
            ClassWithFinalizer withFinalizer = MockRepository.Mock <ClassWithFinalizer>();

            withFinalizer.VerifyExpectations(true);
            withFinalizer = null;             // abandon the variable, will make it avialable for GC.

            GC.WaitForPendingFinalizers();
        }
        public void MockAClassWithFinalizer()
        {
            MockRepository     mocks         = new MockRepository();
            ClassWithFinalizer withFinalizer = (ClassWithFinalizer)mocks.StrictMock(typeof(ClassWithFinalizer));

            mocks.ReplayAll();
            mocks.VerifyAll();             //move it to verify state
            withFinalizer = null;          // abandon the variable, will make it avialable for GC.
            GC.WaitForPendingFinalizers();
        }
        public void MockAClassWithFinalizer()
        {
            ClassWithFinalizer withFinalizer = MockRepository.Mock <ClassWithFinalizer>();

            withFinalizer.SetUnexpectedBehavior(UnexpectedCallBehaviors.BaseOrDefault);

            withFinalizer.VerifyExpectations(true);
            withFinalizer = null; // abandon the variable, will make it avialable for GC.

            GC.WaitForPendingFinalizers();
        }
        public void RunIDisposableExamples()
        {
            Action a1 = () =>
            {
                Console.Write("[Finalizer.IDisposable.Dispose] ");
                for (int i = 0; i < 1; ++i)
                {
                    var instance = new ClassWithFinalizer();
                    instance.Dispose();
                    instance = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Console.WriteLine();
            };

            a1();

            Action a2 = () =>
            {
                Console.Write("[Finalizer.IDisposable.NoDispose] ");
                for (int i = 0; i < 1; ++i)
                {
                    var instance = new ClassWithFinalizer();
                    instance = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Console.WriteLine();
            };

            a2();

            Action a3 = () =>
            {
                Console.Write("[NoFinalizer.IDisposable.Dispose] ");
                for (int i = 0; i < 1; ++i)
                {
                    var instance = new ClassWithoutFinalizer();
                    instance.Dispose();
                    instance = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Console.WriteLine();
            };

            a3();

            Action a4 = () =>
            {
                Console.Write("[NoFinalizer.IDisposable.NoDispose] ");
                for (int i = 0; i < 1; ++i)
                {
                    var instance = new ClassWithoutFinalizer();
                    instance = null;
                }
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Console.WriteLine();
            };

            a4();
        }