Ejemplo n.º 1
0
        public static void Run(string csvFile, string solversDir, string inputFile, string optionFile)
        {
            FileManager.WriteToFile(csvFile, inputFile, true, true);

            foreach (string solver in SolverEnum.GetSolvers())
            {
                if (!FileManager.SolverPresent(solversDir, solver + ".solver"))
                {
                    continue;
                }

                ASPInputProgram       inputProgram = new ASPInputProgram();
                DesktopHandler        handler      = new DesktopHandler(SolverEnum.GetService(solversDir, solver));
                List <ISet <object> > answerSets   = new List <ISet <object> >();
                int optionID = handler.AddOption(new OptionDescriptor(SolverEnum.GetOutputOption(solver)));

                if (string.IsNullOrWhiteSpace(optionFile))
                {
                    FileManager.ReadFilters(optionFile, solver).ForEach(filter => handler.AddOption(new OptionDescriptor(" " + filter)));
                }

                handler.AddProgram(inputProgram);
                inputProgram.AddFilesPath(inputFile);

                List <string> sortedOutput = OutputManager.ProcessRawOutput(solver, ((AnswerSets)(handler.StartSync())).OutputString);

                handler.RemoveOption(optionID);

                var watch = System.Diagnostics.Stopwatch.StartNew();

                foreach (AnswerSet answerSet in ((AnswerSets)(handler.StartSync())).Answersets)
                {
                    answerSets.Add(answerSet.Atoms);
                }

                watch.Stop();
                FileManager.WriteToFile(csvFile, solver + ":" + watch.ElapsedMilliseconds.ToString(), null, true);

                if (answerSets.Count > 0)
                {
                    foreach (ISet <object> answerSet in answerSets)
                    {
                        string tmp = string.Join(" ", SortFacts(answerSet));

                        if (!sortedOutput.Contains(tmp))
                        {
                            Console.WriteLine("ERROR! Original " + solver + " output does not contain:\n" + tmp + "\n");
                        }
                        ;
                    }
                }
            }

            Console.WriteLine("END");
        }