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); }
public LuckyTicketsCounter(int digitsCount, TicketCountAlgorithms inputAlgorithmType) { ArgumentExceptionCheck(digitsCount); if (digitsCount == 0) { TicketDigitsCount = DEFAULT_DIGITS_COUNT; } else { TicketDigitsCount = digitsCount; } AlgorithmType = inputAlgorithmType; }
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); }
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); }
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); }