示例#1
0
        public void Reduce_WhenGivenSequenceWithPossibilityOfReduction_ReturnsReducedSequence()
        {
            // Arrange
            var points = new List <Measurement>
            {
                new Measurement {
                    MeasurementTime = new DateTime(2015, 10, 4, 15, 00, 00), AmountSold = 1000, AmountSeasonTicket = 1000
                },
                new Measurement {
                    MeasurementTime = new DateTime(2015, 10, 4, 15, 10, 00), AmountSold = 1000, AmountSeasonTicket = 1000
                },
                new Measurement {
                    MeasurementTime = new DateTime(2015, 10, 4, 15, 20, 00), AmountSold = 1000, AmountSeasonTicket = 1000
                }
            };
            var sut = new PointReducer();

            // Act
            var res = sut.Reduce(points).ToList();

            // Assert
            res.Count.Should().Be(2, "the three have the same value");
            res[0].Should().BeSameAs(points[0]);
            res[1].Should().BeSameAs(points[2]);
        }
示例#2
0
        public void Reduce_WhenGivenEmptySequence_ReturnsEmptySequence()
        {
            // Arrange
            var sut = new PointReducer();

            // Act
            var res = sut.Reduce(Enumerable.Empty <Measurement>()).ToList();

            // Assert
            res.Count.Should().Be(0, "the source list was empty");
        }
示例#3
0
        public void Reduce_WhenGivenNullValue_ReturnsEmptySequence()
        {
            // Arrange
            var sut = new PointReducer();

            // Act
            var res = sut.Reduce(null).ToList();

            // Assert
            res.Should().NotBeNull("we should get an empty sequence");
            res.Should().BeEmpty("there should be nothing here");
        }
        public SingleMatchViewmodel(BillettServiceEvent bsEvent)
        {
            Opponent   = bsEvent.Opponent;
            Tournament = CreateTournamentName(bsEvent);

            Location    = bsEvent.Location == "TLD" ? "Lerkendal stadion" : "";
            _matchStart = bsEvent.Start;

            var logoPath = StautConfiguration.Current.LogoDirectory ?? Environment.CurrentDirectory;

            EnemyLogoPath = Path.Combine(logoPath, Opponent.Replace("/", "_") + ".png"); // Helvetes Bodø/Glimt.
            if (!File.Exists(EnemyLogoPath))
            {
                EnemyLogoPath = Path.Combine(logoPath, "NoLogo.png");
            }

            var lastMeasurement = bsEvent.Measurements.LastOrDefault();

            if (lastMeasurement != null)
            {
                SoldTickets            = lastMeasurement.AmountSold;
                SoldSeasonTickets      = lastMeasurement.AmountSeasonTicket;
                ReservedUnknownTickets = lastMeasurement.AmountReserved + lastMeasurement.AmountUnknown;
                TicketsForSale         = lastMeasurement.AmountAvailable;
            }

            LastUpdateTime = bsEvent.Measurements
                             .OrderByDescending(m => m.MeasurementTime)
                             .First()
                             .MeasurementTime;

            var reducedMeasurements = new PointReducer().Reduce(bsEvent.Measurements);

            DataSeries = new ObservableCollection <StautSeries>
            {
                new StautSeries
                {
                    Title  = "Rosenborg - " + bsEvent.Opponent,
                    Start  = bsEvent.Start,
                    Points =
                        new List <StautPoint>(
                            reducedMeasurements
                            .Where(m => m.TotalAmountSold > 0)
                            .Select(
                                m =>
                                new StautPoint
                    {
                        XValue = bsEvent.Start.Subtract(m.MeasurementTime).TotalDays,
                        YValue = m.TotalAmountSold
                    }))
                }
            };
        }