示例#1
0
        public bool updateSingleTestResult(int uId, int tId, SingleTestResult uSingleResult)
        {
            var singleResult = db.SingleTestResults.SingleOrDefault(t => (t.UserId == uId && t.TestId == tId));

            if (singleResult != null)
            {
                singleResult.Passed   = uSingleResult.passed;
                singleResult.Attempts = uSingleResult.tries;
                singleResult.TimeUsed = uSingleResult.timeSpent;
            }
            else
            {
                return(false);
            }

            try
            {
                db.SaveChanges();
                return(true);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.StackTrace);
                Debug.WriteLine(e.Message);
                return(false);
            }
        }
示例#2
0
        public bool addSingleResult(SingleTestResult result)
        {
            var singleResultRow = new SingleTestResults()
            {
                Passed   = result.passed,
                Attempts = result.tries,
                TimeUsed = result.timeSpent,
                UserId   = result.userId,
                TestId   = result.testId,
                CodeLink = result.codeLink
            };

            try
            {
                db.Add(singleResultRow);
                db.SaveChanges();
                return(true);
            }
            catch (Exception e)
            {
                Debug.WriteLine(e.StackTrace);
                Debug.WriteLine(e.Message);
                return(false);
            }
        }
示例#3
0
 public void StoreResult(int numCities, string methodName, SingleTestResult result)
 {
     if (!_cityToFunctionToResults.ContainsKey(numCities))
     {
         _cityToFunctionToResults.Add(numCities, new Dictionary<string, List<SingleTestResult>>());
     }
     Dictionary<string, List<SingleTestResult>> functionToResults = _cityToFunctionToResults[numCities];
     if (!functionToResults.ContainsKey(methodName))
     {
         functionToResults.Add(methodName, new List<SingleTestResult>());
     }
     functionToResults[methodName].Add(result);
     _usedMethods.Add(methodName);
 }
示例#4
0
        private SingleTestResult runAllTestIterations(TestSuiteEntry curTest, MethodInfo implementation,
            BackgroundWorker worker, TestSuiteProgressData progressData)
        {
            List<SingleTestResult> _allTestResults = new List<SingleTestResult>();

            for (int i = 0; i < curTest.NumberOfIterations; i++)
            {
                Log("Running {0} iteration: {1}/{2}", implementation.Name, (i + 1), curTest.NumberOfIterations);
                progressData.CurrentIterationProgress++;
                progressData.CurrentMaxProgress++;
                worker.ReportProgress(progressData.CompletionPercentage, progressData);
                Random random = new Random();
                int seed = random.Next(1000); // 3-digit random number
                SingleTestResult thisRun = runTestIteration(seed, curTest.NumberCities, implementation,
                    worker, progressData);
                _allTestResults.Add(thisRun);
                Log("Result was {0}", thisRun);
            }
            double averageTime = 0;
            double averageDistance = 0;
            foreach (SingleTestResult s in _allTestResults)
            {
                averageTime += s.TimeInSeconds;
                averageDistance += s.Distance;
            }
            averageTime /= curTest.NumberOfIterations;
            averageDistance /= curTest.NumberOfIterations;

            SingleTestResult averageTestResult = new SingleTestResult(averageDistance, averageTime);
            Log("Average test result was {0}", averageTestResult.ToString());
            progressData.MostRecentSolution = String.Format("{0} Number of cities with function {1} and {2} iterations" +
                " took {3} seconds with cost of {4}", curTest.NumberCities, implementation.Name, curTest.NumberOfIterations,
                averageTestResult.TimeInSeconds, averageTestResult.Distance);
            worker.ReportProgress(progressData.CompletionPercentage, progressData);
            return averageTestResult;
        }