public void EventFromJsonEventSecondHalfTest() { // set up DateTime start = new DateTime(2014, 1, 1); GameEventMiner miner = new GameEventMiner(); GameEvent evnt = null; Game game = new Game() { Id = 1, Start = start, HalftimeStart = start.AddMinutes(45) }; JsonGameEvent jsonEvnt = new JsonGameEvent() { Comment = "Goal", CommentTypeId = 1, MatchPeriodId = 2, Minute = 55, Second = 2, Time = "55'" }; // exercise evnt = miner.EventFromJsonEvent(jsonEvnt, game); // validate Assert.IsNotNull(evnt); Assert.AreEqual(GameEventType.GOAL, evnt.Type); Assert.AreEqual(new DateTime(2014, 1, 1, 1, 10, 2), evnt.Timestamp); Assert.AreEqual("55'", evnt.MatchTime); Assert.AreEqual("Goal", evnt.Comment); }
public void EventFromJsonEventFailTest() { // set up GameEventMiner miner = new GameEventMiner(); GameEvent evnt = null; Game game = new Game() { Id = 1, Start = new DateTime(2014, 1, 1) }; JsonGameEvent jsonEvnt = new JsonGameEvent() { Comment = "Invalid", CommentTypeId = 99, MatchPeriodId = 1, Minute = 40, Second = 2, Time = "40'" }; // exercise evnt = miner.EventFromJsonEvent(jsonEvnt, game); // validate Assert.IsNull(evnt); }
/// <summary> /// translates a JsonGameEvent to a GameEvent. returns null if the event /// cannot be translated /// </summary> /// <param name="jsonEvent">the event to translate</param> /// <param name="game">the game the event belongs to</param> /// <returns>the new game event</returns> public GameEvent EventFromJsonEvent(JsonGameEvent jsonEvent, Game game) { GameEvent evnt = new GameEvent(); // set up the easy fields first evnt.MatchTime = jsonEvent.Time; evnt.Comment = jsonEvent.Comment; evnt.GameId = game.Id; // calculate the timestamp if (jsonEvent.MatchPeriodId == 1) { evnt.Timestamp = game.Start.AddMinutes(jsonEvent.Minute).AddSeconds(jsonEvent.Second); } else if (jsonEvent.MatchPeriodId == 2) { TimeSpan extra = game.HalftimeStart.Value.AddMinutes(-45) - game.Start; // add 15 minutes for half time and any extra time evnt.Timestamp = game.Start.AddMinutes(jsonEvent.Minute + 15) .AddSeconds(jsonEvent.Second).AddSeconds(extra.TotalSeconds); } else { return null; } // determine what time of event this is switch (jsonEvent.CommentTypeId) { case GoalType: evnt.Type = GameEventType.GOAL; break; case SubType: evnt.Type = GameEventType.SUB; break; case YellowType: evnt.Type = GameEventType.YELLOW; break; case RedType: evnt.Type = GameEventType.RED; break; case StartOfHalfType: if (jsonEvent.MatchPeriodId == 1) { evnt.Type = GameEventType.FIRST_HALF_START; evnt.MatchTime = "0'"; } else if (jsonEvent.MatchPeriodId == 2) { evnt.Type = GameEventType.SECOND_HALF_START; evnt.MatchTime = "45'"; game.HalftimeEnd = evnt.Timestamp; } else return null; break; case EndFirstHalfType: evnt.Type = GameEventType.FIRST_HALF_END; game.HalftimeStart = evnt.Timestamp; break; case EndSecondHalfType: evnt.Type = GameEventType.SECOND_HALF_END; game.End = evnt.Timestamp; break; default: return null; } return evnt; }
public void EventFromJsonEventTest() { // set up GameEventMiner miner = new GameEventMiner(); GameEvent evnt = null; Game game = new Game() { Id = 1, Start = new DateTime(2014, 1, 1) }; JsonGameEvent jsonEvnt = new JsonGameEvent() { Comment = "Goal", CommentTypeId = 5, MatchPeriodId = 1, Minute = 40, Second = 2, Time = "40'" }; // exercise evnt = miner.EventFromJsonEvent(jsonEvnt, game); // validate Assert.IsNotNull(evnt); Assert.AreEqual(GameEventType.RED, evnt.Type); Assert.AreEqual(new DateTime(2014, 1, 1, 0, 40, 2), evnt.Timestamp); Assert.AreEqual("40'", evnt.MatchTime); Assert.AreEqual("Goal", evnt.Comment); }