public void ProcessCoordinatorConstructorTest()
        {
            var target = new ProcessCoordinator_Accessor(new PrivateObject(new ProcessCoordinator()));
            Assert.IsNotNull(target.Processes);

            //TODO: (SD) Add test for testing Zeroed to be non null and have >0 invocation list.
        }
        public void processJoinCallbackTest()
        {
            var target = new ProcessCoordinator_Accessor();
            var ar = MockRepository.GenerateStub<IAsyncResult>();
            //target.log = MockRepository.GenerateStub<TraceSource>();

            var process1 = MockRepository.GenerateStub<IProcess>();
            var process2 = MockRepository.GenerateStub<IProcess>();

            process1.Expect(p => p.Start());
            process2.Expect(p => p.Start());
            process1.Expect(p => p.Stop());
            process2.Expect(p => p.Stop());

            target.Processes.AddRange(new List<IProcess> { process1, process2 });

            target.Start();

            target.numberOfProcessesRunning.Zeroed += numberOfProcessesRunning_Zeroed;

            Assert.AreEqual(2, target.numberOfProcessesRunning.SyncValue);

            target.Stop();

            Assert.AreEqual(0, target.numberOfProcessesRunning.SyncValue);
            Assert.IsTrue(numberOfProcesesesZeroedCalled, "numberOfProceseses.Zeroed event is expected to be called!");
            //TODO: (SD) Add tests for exceptional scenarios
            // overall this test happened to be more integration test than a unit test,
            // will change it in the future
        }