public void Test_Invalid_Level_Prize_Level()
        {
            PrizeLevels pls = new PrizeLevels();

            PrizeLevel pl1 = new PrizeLevel();

            pls.addPrizeLevel(pl1);

            Assert.IsTrue(pls.getLevelOfPrize(null) == -1);
        }
        public void Test_Add_At_Prize_Level()
        {
            PrizeLevels pls = new PrizeLevels();

            PrizeLevel pl1 = new PrizeLevel();
            PrizeLevel pl2 = new PrizeLevel();

            pls.addPrizeLevel(pl1);
            pls.addPrizeLevelAt(pl2, 0);

            Assert.IsTrue(pls.getLevelOfPrize(pl2) == 0);
        }
 /// <summary>
 /// Gets the needed picks to win all prize levels of a given division
 /// </summary>
 /// <param name="division">The division is the division containing the winning prize levels</param>
 /// <param name="prizeLevels">All prize levels in the game used to get the index of the prize level</param>
 /// <returns>Returns a list of ints containing the needed picks to win a division</returns>
 private List<int> getNeededPicksForDivision(
     bool useInstantWin,
     Divisions.DivisionModel division,
     PrizeLevels.PrizeLevels prizeLevels)
 {
     List<int> neededPicks = new List<int>();
     List<PrizeLevels.PrizeLevel> pls = division.getPrizeLevelsAtDivision();
     foreach (PrizeLevels.PrizeLevel pl in pls)
     {
         int numberToCollect = pl.numCollections;
         int indexInPrizeLevels = prizeLevels.getLevelOfPrize(pl) + 1;
         if ((pl.isInstantWin || pl.numCollections == 0) && useInstantWin)
         {
             numberToCollect = 1;
             neededPicks.Add(-indexInPrizeLevels);
         }
         else
         {
             numberToCollect = pl.numCollections;
             for (int i = 0; i < numberToCollect; i++)
             {
                 neededPicks.Add(indexInPrizeLevels);
             }
         }
     }
     return neededPicks;
 }
        /// <summary>
        /// Builds the header information for the file
        /// </summary>
        /// <param name="prizes">All prize informaiton</param>
        /// <param name="divisions">All division information</param>
        /// <returns>Returns a list of string representing each line of the header</returns>
        private List<string> buildHeader(PrizeLevels.PrizeLevels prizes, Divisions.DivisionsModel divisions)
        {
            List<string> headerLines = new List<string>();
            headerLines.Add("The first number is the division indicator.");
            headerLines.Add("Prize level indicators and values:");
            int prizeLevel = 1;
            StringBuilder sb;
            foreach (PrizeLevels.PrizeLevel p in prizes.prizeLevels)
            {
                sb = new StringBuilder();
                sb.Append("Prize Level Character: " + charFromInt(prizes.getLevelOfPrize(p) + 1));
                sb.Append(" Value: " + p.prizeValue);
                headerLines.Add(sb.ToString());
            }
            headerLines.Add("Division level indicators and values:");
            foreach (Divisions.DivisionModel div in divisions.divisions)
            {
                sb = new StringBuilder();
                sb.Append("Division Number: " + prizeLevel++);
                sb.Append(" Value: " + div.TotalPrizeValue);
                sb.Append(" Prize Levels at Division: ");
                foreach (PrizeLevels.PrizeLevel p in div.getPrizeLevelsAtDivision())
                {
                    sb.Append(charFromInt(prizes.getLevelOfPrize(p) + 1));
                }

                headerLines.Add(sb.ToString());
            }
            sb = new StringBuilder();
            sb.Append("Division Level Number: " + prizeLevel++);
            sb.Append(" Value: " + 0);
            headerLines.Add(sb.ToString());
            return headerLines;
        }