Beispiel #1
0
        public static void Run(string[] args)
        {
            string algorithmFilePath = string.Empty;
            TicketCountAlgorithms currentAlgorhytm = TicketCountAlgorithms.None;

            if (args.Length == 0)
            {
                algorithmFilePath = UI.RequestFilePath();
            }
            else
            {
                algorithmFilePath = args[0];
            }

            AlgorithmGetter algorithmGet = new AlgorithmGetter(new AlgorithmFileReader());

            currentAlgorhytm = algorithmGet.GetAlgorhytm(algorithmFilePath);

            if (currentAlgorhytm != TicketCountAlgorithms.None)
            {
                ulong ticketCount = 0;
                LuckyTicketsCounter counter;

                try
                {
                    switch (currentAlgorhytm)
                    {
                    case TicketCountAlgorithms.Moscow:
                        counter     = new LuckyTicketsCounterMoscow(DEFAULT_DIGITS_NUMBER);
                        ticketCount = counter.GetLuckyTicketsQuantity();
                        break;

                    case TicketCountAlgorithms.Piter:
                        counter     = new LuckyTicketsCounterPiter(DEFAULT_DIGITS_NUMBER);
                        ticketCount = counter.GetLuckyTicketsQuantity();
                        break;

                    default:
                        break;
                    }
                }
                catch (InvalidTicketDigitsCountException ex)
                {
                    UI.PrintExceptionMessage(ex);
                }
                catch (RecursionDepthTooBigException ex)
                {
                    UI.PrintExceptionMessage(ex);
                }

                UI.PrintTicketsCount(ticketCount);
            }
            else
            {
                UI.PrintHelp(Path.GetFullPath(algorithmFilePath));
            }
        }
        public void TestAlgorithmGetterInvalidExpectAlgorithmTypeNone()
        {
            //Arrange
            AlgorithmGetter       getter            = new AlgorithmGetter(invalidDataProvider);
            TicketCountAlgorithms expectedAlgorithm = TicketCountAlgorithms.None;

            //Act
            TicketCountAlgorithms actualAlgorhitm = getter.GetAlgorhytm(VALID_FILE_NAME);

            //Assert
            Assert.AreEqual(expectedAlgorithm, actualAlgorhitm);
        }
Beispiel #3
0
        public LuckyTicketsCounter(int digitsCount, TicketCountAlgorithms inputAlgorithmType)
        {
            ArgumentExceptionCheck(digitsCount);

            if (digitsCount == 0)
            {
                TicketDigitsCount = DEFAULT_DIGITS_COUNT;
            }
            else
            {
                TicketDigitsCount = digitsCount;
            }

            AlgorithmType = inputAlgorithmType;
        }
Beispiel #4
0
        public TicketCountAlgorithms GetAlgorhytm(string filePath)
        {
            TicketCountAlgorithms result = TicketCountAlgorithms.None;

            string data = _algorithmReader.GetAlgorithmLine(filePath,
                                                            ALGORITHM_NAME_MOSCOW, ALGORITHM_NAME_PITER);

            if (data == ALGORITHM_NAME_MOSCOW)
            {
                result = TicketCountAlgorithms.Moscow;
            }

            if (data == ALGORITHM_NAME_PITER)
            {
                result = TicketCountAlgorithms.Piter;
            }

            return(result);
        }
Beispiel #5
0
        private static bool TryGetAlgorhytm(string filePath, out TicketCountAlgorithms result)
        {
            bool isAlgorhithmFound = false;

            result = TicketCountAlgorithms.None;

            if (AlgorithmFileReader.GetAlgorithmLine(filePath) == ALGORITHM_NAME_MOSCOW)
            {
                result            = TicketCountAlgorithms.Moscow;
                isAlgorhithmFound = true;
            }

            if (AlgorithmFileReader.GetAlgorithmLine(filePath) == ALGORITHM_NAME_PITER)
            {
                result            = TicketCountAlgorithms.Piter;
                isAlgorhithmFound = true;
            }

            return(isAlgorhithmFound);
        }
Beispiel #6
0
        private static bool TryGetAlgorhytm(string filePath, out TicketCountAlgorithms result)
        {
            bool isAlgorhithmFound = false;

            result = TicketCountAlgorithms.None;

            using (StreamReader file = new StreamReader(filePath))
            {
                string currentLine = null;

                do
                {
                    currentLine = file.ReadLine();

                    if (currentLine != null)
                    {
                        currentLine = currentLine.Trim().ToLower();

                        if (currentLine == ALGORITHM_NAME_MOSCOW)
                        {
                            isAlgorhithmFound = true;
                            result            = TicketCountAlgorithms.Moscow;
                            break;
                        }

                        if (currentLine == ALGORITHM_NAME_PITER)
                        {
                            isAlgorhithmFound = true;
                            result            = TicketCountAlgorithms.Piter;
                            break;
                        }
                    }
                } while (currentLine != null);
            }

            return(isAlgorhithmFound);
        }