public void RunEquals_RunNoDiffers_false() { var crit = new JudgingCriterion() { Id = 5 }; var judge = new Judge() { Id = 8 }; var rc = new RoundContestant() { Id = 7 }; var j1 = new RunJudging(rc, judge, crit, 1, 7M); var j2 = new RunJudging(rc, judge, crit, 2, 6M); j1.Id = 1; j2.Id = 2; var result = j1.RunEquals(j2); Assert.IsFalse(result); }
/// <summary> /// Used to quickly assign a score to all contestants in a round. /// </summary> /// <param name="tourney"></param> /// <param name="round"></param> public static List <RunJudging> ScoreAllContestants(Tournament tourney, Round round) { // Kvadruppel-nøsted loop. Ikke hver dag du ser det, eller hva? var rand = new Random(); var scoreList = new List <RunJudging>(); foreach (var contestant in round.ContestantEntries) { for (int runNo = 1; runNo < round.RunsPerContestant; runNo++) { foreach (var crit in tourney.JudgingCriteria) { foreach (var judge in tourney.Judges) { var judgement = new RunJudging(); judgement.CriterionId = crit.Id; judgement.JudgeId = judge.Id; judgement.RoundContestantId = contestant.Id; judgement.RunNo = runNo; judgement.Score = (decimal)((decimal)rand.NextDouble() * (crit.Max - crit.Min) + crit.Min); contestant.ReplaceRunJudging(judgement); scoreList.Add(judgement); } } } } return(scoreList); }
public void RunEquals_AllButIdAndScoreEqual_true() { var crit = new JudgingCriterion() { Id = 5 }; var judge = new Judge() { Id = 8 }; var rc = new RoundContestant() { Id = 7 }; var j1 = new RunJudging(rc, judge, crit, 1, 7M); var j2 = new RunJudging(rc, judge, crit, 1, 6M); j1.Id = 1; j2.Id = 2; var result = j1.RunEquals(j2); Assert.IsTrue(result); }
internal static RunJudging SetIdFromObjects(this RunJudging rj) { rj.JudgeId = rj.Judge.Id; rj.RoundContestantId = rj.RoundContestant.Id; rj.CriterionId = rj.Criterion.Id; return(rj); }
public void ReplaceRunJudging_NewItem_Added() { var crit1 = new JudgingCriterion() { Id = 5 }; var crit2 = new JudgingCriterion() { Id = 9 }; var judge = new Judge() { Id = 8 }; var rc = new RoundContestant() { Id = 7 }; rc.EnsureListsAreInitialized(); var j1 = new RunJudging() { Id = 1, Criterion = crit1, Judge = judge, Score = 7, RoundContestant = rc, RunNo = 1 }; rc.ReplaceRunJudging(j1); Assert.AreEqual(1, rc.RunJudgings.Count); Assert.AreSame(j1, rc.RunJudgings.First()); }
/// <summary> /// Converts list back to a list of RunJudgings -mapping it to the criteria list supplied /// </summary> /// <param name="orderedCriteriaList">ID-ordered list of Criterias, mapping to the scores by inddex</param> /// <returns>List of runJudgings</returns> public List <RunJudging> GetAsRunJudgings(List <JudgingCriterion> orderedCriteriaList) { var list = new List <RunJudging>(); if (!orderedCriteriaList.AreInRisingOrder(p => p.Id)) { throw new ArgumentException("Criteria list must be ordered by ID because the score list is"); } if (Scores.Count == 0) { return(list); } if (orderedCriteriaList.Count != Scores.Count) { throw new ArgumentException("You must supply as many criterias as there are scores"); } for (int i = 0; i < Scores.Count; i++) { var rj = new RunJudging() { RoundContestantId = RoundContestantId, JudgeId = JudgeId, RunNo = RunNo, CriterionId = orderedCriteriaList[i].Id, Score = Scores[i] }; list.Add(rj); } return(list); }
private static List <RunJudging> MapScoresToCriteria(IEnumerable <JudgingCriterion> criteria, List <RunJudging> scores, long judgeId, int runNo, long rcId) { var criteriaIds = criteria.OrderBy(p => p.Id).Select(p => p.Id); var list = new List <RunJudging>(); foreach (var critId in criteriaIds) { var scoreForCrit = scores.FirstOrDefault(p => p.CriterionId == critId); if (scoreForCrit == null) // Create score object with { scoreForCrit = new RunJudging { CriterionId = critId, JudgeId = judgeId, RunNo = runNo, RoundContestantId = rcId }; } list.Add(scoreForCrit); } return(list); }
/// <summary> /// Adds RunJudings with linearly increasing score for all contestants, all runs, all criterias, all judges, in specified round /// </summary> /// <param name="tourney"></param> /// <param name="roundNo">Round number to add for</param> /// <returns></returns> internal static Tournament WithJudgementsForRound(this Tournament tourney, int roundNo) { int score = 1; var round = tourney.GetRoundNo(roundNo); var judgementCount = tourney.GetExpectedJudgementCountPerRun(); foreach (var rc in round.ContestantEntries) { foreach (var judge in tourney.Judges) { for (int runNo = 1; runNo <= round.RunsPerContestant; runNo++) { foreach (var crit in tourney.JudgingCriteria) { var rj = new RunJudging(rc, judge, crit, runNo, score++); rc.ReplaceRunJudging(rj); rc.CalculateTotalScore(judgementCount, round.RunsPerContestant); } } } } return(tourney); }
/// <summary> /// Adds or replaces juding for particular run /// </summary> /// <param name="judging"></param> public void ReplaceRunJudging(RunJudging judging) { RunJudgings.Replace(judging); SaveChanges(); }
public void IT_PostRunJudgingsFromWeb_FinalizingJudgementOfOneContestant() { long?id = null; try { var scores = new ContestantRunViewModel(); var wrappedScores = new JudgeViewModel(); // Setup/Act using (var db = new NordicArenaDataContext()) { var tourney = Factory.CreateInitializedTourney(); tourney.Contestants.Add(new Contestant("Roger")); tourney.Contestants.Add(new Contestant("Hans")); var judge = new Judge("Dommer"); judge.Tournament = tourney; db.Judges.Add(judge); db.Tournaments.Add(tourney); db.SaveChanges(); tourney = db.Tournaments.FirstOrDefault(p => p.Id == tourney.Id); tourney.Start(); db.SaveChanges(); id = tourney.Id; var round1 = tourney.Rounds.FirstOrDefault(); round1.RunsPerContestant = 1; var rc1 = round1.ContestantEntries.FirstOrDefault(); var critList = tourney.JudgingCriteria.ToList(); // Set up scores scores.RoundContestantId = rc1.Id; scores.TournamentId = tourney.Id; for (int i = 0; i < critList.Count; i++) { var score = new RunJudging(); score.CriterionId = critList[i].Id; score.JudgeId = judge.Id; score.RoundContestantId = rc1.Id; score.RunNo = 1; score.Score = (i + 1); scores.Scores.Add(score); } wrappedScores.Contestants = new List <ContestantRunViewModel>(); wrappedScores.Contestants.Add(scores); wrappedScores.Tournament = tourney; } // Act var ctrl = new TournamentJudgeController(null, new EfTournamentService(), ServiceFaker.GetFakeSignalRHub()); ctrl.JudgeIndex(wrappedScores); // Assert using (var db = new EfTournamentService()) { var rc = db.GetRoundContestantGuarded(scores.RoundContestantId); Assert.IsTrue(rc.TotalScore.HasValue); } } catch (DbEntityValidationException exc) { throw DbValidationExceptionWrapper.Wrap(exc); } finally { DatabaseHelper.DeleteTournament(id); ServiceFaker.ResetIocContainer(); } }