IScriptModuleRepository GetMockedScriptModuleRepositoryForDependencyGraph(IEnumerable<string> dependencyGraph, out ModuleInfo mainModule)
 {
     var moduleRepo = new Moq.Mock<IScriptModuleRepository>();
     foreach (var moduleInfo in GetModuleArrayFromDependencyGraph(dependencyGraph, out mainModule))
     {
         moduleRepo.Setup((repo) => repo.GetModule(moduleInfo.Name)).Returns(moduleInfo);
     }
     return moduleRepo.Object;
 }
        IEnumerable<ModuleInfo> GetModuleArrayFromDependencyGraph(IEnumerable<string> dependencyGraph, out ModuleInfo mainModule)
        {
            var modules = new List<ModuleInfo>();
            mainModule = null;
            var first = true;
            foreach (var module in dependencyGraph)
            {
                var parts = module.Split(new []{"=>"}, StringSplitOptions.None);
                var moduleInfo = BuildModuleInfo(parts[0], parts[1]);
                if(first && !(first=false))
                    mainModule = moduleInfo;
                modules.Add(BuildModuleInfo(parts[0], parts[1]));
            }

            return modules;
        }