/// <summary> /// Initializes a new instance of the <see cref="OddsChangeEventArgs{T}"/> class /// </summary> /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map feed message to the one dispatched to the user</param> /// <param name="feedMessage">A <see cref="odds_change"/> message received from the feed</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages to which the received message is translated</param> /// <param name="rawMessage">A raw message received from the feed</param> internal OddsChangeEventArgs(IFeedMessageMapper messageMapper, odds_change feedMessage, IEnumerable <CultureInfo> cultures, byte[] rawMessage) { Guard.Argument(messageMapper, nameof(messageMapper)).NotNull(); Guard.Argument(feedMessage, nameof(feedMessage)).NotNull(); Guard.Argument(cultures, nameof(cultures)).NotNull().NotEmpty(); _messageMapper = messageMapper; _feedMessage = feedMessage; _defaultCultures = cultures as IReadOnlyCollection <CultureInfo>; _rawMessage = rawMessage; _oddsChange = GetOddsChange(); }
/// <summary> /// Initializes a new instance of the <see cref="OddsChangeEventArgs{T}"/> class /// </summary> /// <param name="messageMapper">A <see cref="IFeedMessageMapper"/> used to map feed message to the one dispatched to the user</param> /// <param name="feedMessage">A <see cref="odds_change"/> message received from the feed</param> /// <param name="cultures">A <see cref="IEnumerable{CultureInfo}"/> specifying the default languages to which the received message is translated</param> /// <param name="rawMessage">A raw message received from the feed</param> internal OddsChangeEventArgs(IFeedMessageMapper messageMapper, odds_change feedMessage, IEnumerable <CultureInfo> cultures, byte[] rawMessage) { Guard.Argument(messageMapper, nameof(messageMapper)).NotNull(); Guard.Argument(feedMessage, nameof(feedMessage)).NotNull(); if (!cultures.Any()) { throw new ArgumentOutOfRangeException(nameof(cultures)); } _messageMapper = messageMapper; _feedMessage = feedMessage; _defaultCultures = cultures as IReadOnlyCollection <CultureInfo>; _rawMessage = rawMessage; _oddsChange = GetOddsChange(); }
private void TestEntityValues(IOddsChange <ICompetition> entity, odds_change record, AssertHelper assertHelper) { TestEventMessageProperties(assertHelper, entity, record.timestamp, record.product, record.event_id, record.RequestId); assertHelper.AreEqual(() => entity.ChangeReason, MessageMapperHelper.GetEnumValue <OddsChangeReason>(record.odds_change_reason)); if (record.odds.betstop_reasonSpecified) { assertHelper.AreEqual(() => entity.BetStopReason.Id, record.odds.betstop_reason); } else { assertHelper.IsNull(() => entity.BetStopReason); } if (record.odds.betting_statusSpecified) { assertHelper.AreEqual(() => entity.BettingStatus.Id, record.odds.betting_status); } else { assertHelper.IsNull(() => entity.BettingStatus); } if (record.odds?.market == null || record.odds.market.Length == 0) { Assert.IsNull(entity.Markets); } else { foreach (var marketRecord in record.odds.market) { var market = FindMarket(entity.Markets, marketRecord.id, marketRecord.specifiers); Assert.IsNotNull(market, $"Market with id={marketRecord.id} does not exist on mapped message"); TestMarketValues(market, marketRecord); } } }