public void TestRandomText()
        {
            // Validate basic numbers.
            var result = InputStringParser.Parse("how much wood could a woodchuck chuck if a woodchuck could chuck wood?");

            Debug.Assert(result.ResultType == ResultType.Question);
        }
        public void TestValidUnitInformation()
        {
            // Validate basic numbers.
            var result = InputStringParser.Parse("glob is I");

            Debug.Assert(result.ResultType == ResultType.UnitInfo && result.Tokens.Count == 2);
        }
        public void TestMetalInformation()
        {
            // Validate basic numbers.

            var result = InputStringParser.Parse("glob glob Silver is 34 Credits");

            Debug.Assert(result.ResultType == ResultType.MetalInfo);
        }
        public void TestInValidInput()
        {
            var result = InputStringParser.Parse("glob is");

            Debug.Assert(result.ResultType == ResultType.Unknown);

            result = InputStringParser.Parse("glob");
            Debug.Assert(result.ResultType == ResultType.Unknown);
        }
        public void TestQuestionInformation()
        {
            // Validate basic numbers.
            var result = InputStringParser.Parse("how many Credits is glob prok Silver ?");

            Debug.Assert(result.ResultType == ResultType.Question);

            result = InputStringParser.Parse("glob Silver ?");
            Debug.Assert(result.ResultType == ResultType.Question);
        }
Example #6
0
        public void Calculator_GetsSumNumberSentenceForString(string inputString, string expectedNumberSentence)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = true;

            var sut            = new StringCalculator(parser);
            var numberSentence = sut.Calculate(inputString, new AdditionOperation()).NumberSentence;

            Assert.Equal(expectedNumberSentence, numberSentence);
        }
Example #7
0
        public void Calculator_GetsProductForString(string inputString, int expectedProduct)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = true;
            parser.Settings.Delimiters.Add("\n");

            var sut     = new StringCalculator(parser);
            var product = sut.Calculate(inputString, new MultiplicationOperation()).Result;

            Assert.Equal(expectedProduct, product);
        }
Example #8
0
        public void Calculator_GetsDifferenceForString(string inputString, int expectedDifference)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = true;
            parser.Settings.Delimiters.Add("\n");

            var sut        = new StringCalculator(parser);
            var difference = sut.Calculate(inputString, new SubtractionOperation()).Result;

            Assert.Equal(expectedDifference, difference);
        }
Example #9
0
        public void Calculator_GetsSumForString(string inputString, int expectedSum)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = true;
            parser.Settings.Delimiters.Add("\n");

            var sut = new StringCalculator(parser);
            var sum = sut.Calculate(inputString, new AdditionOperation()).Result;

            Assert.Equal(expectedSum, sum);
        }
Example #10
0
        public void Calculator_GetsQuotientForString(string inputString, int expectedQuotient)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = true;
            parser.Settings.Delimiters.Add("\n");

            var sut      = new StringCalculator(parser);
            var quotient = sut.Calculate(inputString, new DivisionOperation()).Result;

            Assert.Equal(expectedQuotient, quotient);
        }
Example #11
0
        public void Calculator_ShouldThrowExceptionForNegativeValues(string inputString, int[] valuesInExceptionMessage)
        {
            var parser = new InputStringParser();

            parser.Settings.AllowNegativeValues = false;
            parser.Settings.Delimiters.Add("\n");

            var sut = new StringCalculator(parser);

            var ex = Assert.Throws <NegativeValuesNotSupportedException>(() => sut.Calculate(inputString, new AdditionOperation()));

            foreach (var number in valuesInExceptionMessage)
            {
                Assert.Contains(number.ToString(), ex.Message);
            }
        }
Example #12
0
        static void Main(string[] args)
        {
            var        parser    = new InputStringParser();
            IOperation operation = new AdditionOperation();;
            var        argValues = CommandLine.Parser.Default.ParseArguments <CommandLineArgumentOptions>(args);

            if (!argValues.Errors.Any())
            {
                // Values are available here
                if (!string.IsNullOrEmpty(argValues.Value.AlternateDelimiter))
                {
                    parser.Settings.Delimiters.Add(argValues.Value.AlternateDelimiter);
                }
                parser.Settings.AllowNegativeValues = argValues.Value.AllowNegativeValues;
                parser.Settings.MaximumValue        = argValues.Value.MaximumValue;
                if (argValues.Value.Operation == Operations.Add)
                {
                    operation = new AdditionOperation();
                }
                else if (argValues.Value.Operation == Operations.Subtract)
                {
                    operation = new SubtractionOperation();
                }
                else if (argValues.Value.Operation == Operations.Multiply)
                {
                    operation = new MultiplicationOperation();
                }
                else if (argValues.Value.Operation == Operations.Divide)
                {
                    operation = new DivisionOperation();
                }
            }
            else
            {
                return;
            }

            var calculator = new StringCalculator(parser);

            Console.WriteLine(calculator.PromptString);
            Console.WriteLine("Multiline strings may be entered. Input an empty line to terminate the input.  " +
                              "The application will repeat execution until the console is closed or terminated with 'Ctrl+C'");
            while (true)
            {
                try
                {
                    string line;
                    string input = string.Empty;
                    while (!String.IsNullOrWhiteSpace(line = Console.ReadLine()))
                    {
                        input += line + "\n";
                    }
                    var result = calculator.Calculate(input.Trim(), operation).NumberSentence;
                    Console.WriteLine($"Result: {result}");
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error Calculating Value.  Error details: {ex.Message}");
                }
                Console.WriteLine("\n");
            }
        }
Example #13
0
 public void SetUp()
 {
     _result = InputStringParser.TryParseString("dsfdsfg:tttt?345", out _password, out _checkChar, out _minValue,
                                                out _maxValue);
 }
Example #14
0
 public void SetUp()
 {
     _result = InputStringParser.TryParseString("1-3 a: abcde", out _password, out _checkChar, out _minValue,
                                                out _maxValue);
 }