public void MineAllSimulation_BuildAllLists_WithPicks()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            FilterMiners(minedData);

            var myList = CreateMyList(minedData, miners);

            Logger.WriteLine($"================== Picking Movies for {nextSunday} ==================\n");

            for (int index = 0; index < miners.Count; index++)
            {
                if (minedData[index] != null &&
                    minedData[index].Any() &&
                    minedData[index][0].WeekendEnding == nextSunday &&
                    miners[index].Weight > 0)
                {
                    // Only show data that will be used.

                    WriteMoviesAndPicks($"==== {miners[index].Name} ====", minedData[index]);
                }
            }

            Logger.WriteLine(string.Empty);

            WriteMoviesAndPicks("==== Spilled Milk Cinema ====", myList);
        }
Exemplo n.º 2
0
        public void MineAll_BuildAllLists_WithPicks_NoCultVult_NoBOProphet()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            FindMiner <MineBoxOfficeProphet>(miners).Weight = 0;
            FindMiner <MineCulturedVultures>(miners).Weight = 0;

            // TODO: Should probably connect the mined data to the miner.

            var myList = CreateMyList(minedData, miners);

            Logger.WriteLine($"================== Picking Movies for {nextSunday} ==================\n");

            for (int index = 0; index < miners.Count; index++)
            {
                if (minedData[index] != null &&
                    minedData[index].Any() &&
                    minedData[index][0].WeekendEnding == nextSunday &&
                    miners[index].Weight > 0)
                {
                    // Only show data that will be used.

                    WriteMoviesAndPicks($"==== {miners[index].Name} ====", minedData[index]);
                }
            }

            Logger.WriteLine(string.Empty);

            WriteMoviesAndPicks("==== Spilled Milk Cinema ====", myList);

            WriteFMLNerdLink(myList);
        }
Exemplo n.º 3
0
        public void MineAll_BuildAllLists_ComparePickNumbers()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            // TODO: Should probably connect the mined data to the miner.

            var myList = CreateMyList(minedData, miners);
            var picker = ConstructTestObject();

            picker.AddMovies(myList);

            var best = picker.ChooseBest();

            var header = "\n__Name____________________________SM Cine";

            for (int index = 0; index < miners.Count; index++)
            {
                header += $"______{miners[index].Abbreviation}*{miners[index].Weight}";
            }

            Logger.WriteLine(header);

            foreach (var movie in best.Movies)
            {
                string isBestPerformer = movie.IsBestPerformer ? "*" : string.Empty;
                string row             = $"{movie.Name + isBestPerformer,-30}  {movie.Earnings,11:N0}";

                for (int index = 0; index < miners.Count; index++)
                {
                    var foundMovie = minedData[index].FirstOrDefault(item => item.Equals(movie));

                    if (foundMovie != null)
                    {
                        row += $" | {foundMovie.Earnings,11:N0}";
                    }
                    else
                    {
                        row += " |  --------";
                    }
                }

                Logger.WriteLine(row);
            }
        }
Exemplo n.º 4
0
        public void MineAll_BuildAllLists_WithPicks_SolomonsTest()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            // Adjust your weights HERE!!

            FindMiner <MineBoxOfficeProphet>(miners).Weight = 0;
            FindMiner <MineCulturedVultures>(miners).Weight = 0;

            // TODO: Should probably connect the mined data to the miner.

            var myList = CreateMyList(minedData, miners);

            Logger.WriteLine($"================== Picking Movies for {nextSunday} ==================\n");

            for (int index = 0; index < miners.Count; index++)
            {
                if (minedData[index] != null &&
                    minedData[index].Any() &&
                    minedData[index][0].WeekendEnding == nextSunday &&
                    miners[index].Weight > 0)
                {
                    // Only show data that will be used.

                    WriteMoviesAndPicks($"==== {miners[index].Name} ====", minedData[index]);
                }
            }

            Logger.WriteLine(string.Empty);

            WriteMoviesAndPicks("==== Spilled Milk Cinema ====", myList);

            Logger.WriteLine("\nUpload for FML Analyzer Site");

            foreach (var movie in myList.OrderByDescending(movie => movie.Cost))
            {
                Logger.WriteLine(movie.Earnings.ToString());
            }
        }
Exemplo n.º 5
0
        public void MineAll_BuildAllLists_WithPicks_TrackDuringWeekend()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            // TODO: Should probably connect the mined data to the miner.

            var myList = CreateMyList(minedData, miners);

            // Adjust based on known values...

            UpdateWithWeekendValues(myList);

            Logger.WriteLine($"================== Picking Movies for {nextSunday} ==================\n");

            for (int index = 0; index < miners.Count; index++)
            {
                if (minedData[index] != null &&
                    minedData[index].Any() &&
                    minedData[index][0].WeekendEnding == nextSunday &&
                    miners[index].Weight > 0)
                {
                    // Only show data that will be used.

                    WriteMoviesAndPicks($"==== {miners[index].Name} ====", minedData[index]);
                }
            }

            Logger.WriteLine(string.Empty);

            WriteMoviesAndPicks("==== Spilled Milk Cinema ====", myList);

            WriteFMLNerdLink(myList);
        }
Exemplo n.º 6
0
        public void MineAll_BuildAllLists_EstimatesOnly_ForHistory()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            var miners    = CreateMiners();
            var minedData = MineMiners(miners);

            // TODO: Should probably connect the mined data to the miner.

            var myList = CreateMyList(minedData, miners);

            Logger.WriteLine($"================== All Estimates for {nextSunday} ==================\n");

            // Build rows of movies, each column is a miner's mined value.

            var nerdsMovies = minedData[NERD_INDEX];
            var rowData     = new StringBuilder();

            rowData.Append("Title                          |  Actuals");

            foreach (var miner in miners)
            {
                rowData.Append($" | {miner.Abbreviation}");
            }

            rowData.Append($" | SM Cinema");

            Logger.WriteLine(rowData.ToString());

            foreach (var movie in nerdsMovies)
            {
                rowData.Clear();

                foreach (var movieList in minedData)
                {
                    if (movieList == nerdsMovies)
                    {
                        rowData.Append($"{movie.Name,-30} | {0m,5} | {movie.Earnings / 1000000,5:F3}");
                    }
                    else
                    {
                        var foundMovie = movieList.FirstOrDefault(item => item.Equals(movie));

                        if (foundMovie != null)
                        {
                            rowData.Append($" | {foundMovie.Earnings / 1000000,5:F3}");
                        }
                        else
                        {
                            rowData.Append(" | ");
                        }
                    }
                }

                var myMovie = myList.FirstOrDefault(item => item.Equals(movie));

                if (myMovie != null)
                {
                    rowData.Append($" | {myMovie.Earnings / 1000000,5:F5}");
                }
                else
                {
                    rowData.Append(" | ");
                }

                Logger.WriteLine(rowData.ToString());
            }
        }
        public void MovieDateUtil_DisplayFirstWeekendOfYear()
        {
            var nextSunday = MovieDateUtil.NextSunday(new DateTime(DateTime.Now.Year, 1, 1));

            Logger.WriteLine($"First weekend: {nextSunday}");
        }
        public void MovieDateUtil_DisplayCurrentSeason()
        {
            var nextSunday = MovieDateUtil.NextSunday();

            Logger.WriteLine($"Year: {nextSunday.Year}  Season:  {MovieDateUtil.DateToSeason(nextSunday)}  Week:  {MovieDateUtil.DateToWeek(nextSunday)}");
        }
        public void MovieDateUtil_NextSunday_GivenDate()
        {
            var actual = MovieDateUtil.NextSunday(new DateTime(2017, 8, 23));

            Assert.AreEqual(new DateTime(2017, 8, 27), actual);
        }
        public void MovieDateUtil_NextSunday_IsASunday()
        {
            var actual = MovieDateUtil.NextSunday();

            Assert.AreEqual(DayOfWeek.Sunday, actual.DayOfWeek);
        }