static void Main()
        {
            var fs = new FileSystemHelper();
            var commandLineProgram = new CommandLineProgram();
            var processRunner = new ProcessRunner(commandLineProgram);
            var outputWriter = new OutputWriter();
            var nodeModulesHelper = new NodeModulesHelper(processRunner, fs);
            var systemDependencyChecker = new SystemDependencyChecker(outputWriter);

            var systemDependencies = new ISystemDependency[]
                {
                    new NodeJsSystemDependency(processRunner),
                    new KarmaSystemDependency(processRunner, nodeModulesHelper),
                    new KarmaSpecReporterSystemDependency(nodeModulesHelper, fs),
                    new KarmaJunitReporterSystemDependency(nodeModulesHelper, fs),
                    /*Example of checking express*/
                    /*new NodeModuleSystemDependency("express", nodeModulesHelper, fs)*/
                };

            foreach (ISystemDependency systemDependency in systemDependencies)
            {
                systemDependencyChecker.CheckSystemDependency(systemDependency);

                if (systemDependency is ISystemDependencyWithVersion)
                {
                    systemDependencyChecker.CheckSystemDependencyVersion(systemDependency as ISystemDependencyWithVersion);
                }
            }

            Console.WriteLine("Press any key to continue...");
            Console.Read();
        }
 public void CheckSystemDependency(ISystemDependency systemDependency)
 {
     if (systemDependency.IsDependencySatisfied())
     {
         _outputWriter.WriteMessage(string.Format("{0} is installed.", systemDependency.Name));
     }
     else
     {
         _outputWriter.WriteError(string.Format("{0} is not installed.", systemDependency.Name));
     }
 }