Exemplo n.º 1
0
        public void Test_SetMemory()
        {
            Calculator calcul = new Calculator();

            calcul.setMemory(true);
            Assert.True(calcul.useMemory);

            calcul.setMemory(false);
            Assert.False(calcul.useMemory);
        }
Exemplo n.º 2
0
        public void Test_Operate()
        {
            string     expressionString = "(2*4+5)";
            string     sign             = "*";
            string     Rstring          = @"\-?\d+\+\-?\d+";
            Calculator tempcalcul       = new Calculator();

            switch (sign)
            {
            case "-":
                Rstring = @"\-?\d+\-\-?\d+";
                break;

            case "*":
                Rstring = @"\-?\d+\*\-?\d+";
                break;

            case "/":
                Rstring = @"\-?\d+\/\-?\d+";
                break;
            }

            foreach (Match multiply in Regex.Matches(expressionString, Rstring, RegexOptions.IgnoreCase))
            {
                string multiplyString = multiply.ToString();
                int    index          = multiplyString.IndexOf(sign, 1);
                string str2           = multiplyString.Substring(index);
                string str1           = multiplyString.Replace(str2, "");

                tempcalcul.Reset();
                if (sign == "-")
                {
                    str2 = str2.IndexOf("-", 1) > 0 ? "-" + str2.Replace("-", "") : str2.Replace("-", "");
                    tempcalcul.setMemory(false);
                }
                else
                {
                    str2 = str2.Replace(sign, "");
                }

                decimal str1Decimal = Convert.ToDecimal(str1);
                doCalcul(str1Decimal, ref tempcalcul, sign);
                if (sign == "-")
                {
                    tempcalcul.setMemory(true);
                }

                decimal str1Decima2 = Convert.ToDecimal(str2);
                doCalcul(str1Decima2, ref tempcalcul, sign);
                expressionString = expressionString.Replace(multiply.ToString(), tempcalcul.result.ToString());
            }
            Assert.Equal("(8+5)", expressionString);
        }