public void TestConfigurationManagerFindAllComponentsOfTypeInvalidApp()
        {
            ConfigurationManager manager = new ConfigurationManager();

            Mock <IApp> app1 = new Mock <IApp>(MockBehavior.Strict);

            app1.Setup(s => s.IsValid).Returns(false);
            manager.AddComponent(app1.Object);

            Mock <IApp> app2 = new Mock <IApp>(MockBehavior.Strict);

            app2.Setup(s => s.IsValid).Returns(false);
            manager.AddComponent(app2.Object);

            Mock <IIOInterface> ioInterface = new Mock <IIOInterface>(MockBehavior.Strict);

            manager.AddComponent(ioInterface.Object);

            IEnumerable <IParseable> foundComponents = manager.FindAllComponentsOfType <IApp>().ToList();

            Assert.AreEqual(0, foundComponents.Count());

            app1.Verify(s => s.IsValid, Times.Exactly(1));
            app2.Verify(s => s.IsValid, Times.Exactly(1));
        }
        public void TestConfigurationManagerFindAllComponentsOfTypeMultipleIOInterfaces()
        {
            ConfigurationManager manager = new ConfigurationManager();

            Mock <IApp> app = new Mock <IApp>(MockBehavior.Strict);

            manager.AddComponent(app.Object);

            Mock <IIOInterface> ioInterface1 = new Mock <IIOInterface>(MockBehavior.Strict);

            ioInterface1.Setup(s => s.IsValid).Returns(true);
            manager.AddComponent(ioInterface1.Object);

            Mock <IIOInterface> ioInterface2 = new Mock <IIOInterface>(MockBehavior.Strict);

            ioInterface2.Setup(s => s.IsValid).Returns(true);
            manager.AddComponent(ioInterface2.Object);

            IEnumerable <IParseable> foundComponents = manager.FindAllComponentsOfType <IIOInterface>().ToList();

            Assert.AreEqual(2, foundComponents.Count());
            Assert.IsTrue(foundComponents.Contains(ioInterface1.Object));
            Assert.IsTrue(foundComponents.Contains(ioInterface2.Object));

            ioInterface1.Verify(s => s.IsValid, Times.Exactly(1));
            ioInterface2.Verify(s => s.IsValid, Times.Exactly(1));
        }