From 5d61ffa85357f29a83d711f502e3bdd5072aeeac Mon Sep 17 00:00:00 2001 From: Pruet Boonma Date: Tue, 4 Sep 2018 09:35:43 +0700 Subject: [PATCH 1/3] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c0572c28..c7567369 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Lab1 -SkeletonForLab +# Lab2 +RPN Calculator From e1316ff7227ffdb61c85e7af445c5e79bd09e0e9 Mon Sep 17 00:00:00 2001 From: PRUET BOONMA Date: Tue, 4 Sep 2018 10:49:35 +0700 Subject: [PATCH 2/3] Add unit tests for CalculatorEngine and RPNCalculatorEngine --- CPE200Lab1/CPE200Lab1.sln | 6 + CPE200Lab1/CPE200Lab1/CPE200Lab1.csproj | 1 + CPE200Lab1/CPE200Lab1/CalculatorEngine.cs | 2 +- CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs | 17 ++ .../CPE200Lab1Test/CPE200Lab1Test.csproj | 75 ++++++ .../CPE200Lab1Test/CalculatorEngineTests.cs | 247 ++++++++++++++++++ .../CPE200Lab1Test/Properties/AssemblyInfo.cs | 20 ++ .../RPNCalculatorEngineTests.cs | 52 ++++ CPE200Lab1/CPE200Lab1Test/packages.config | 5 + 9 files changed, 424 insertions(+), 1 deletion(-) create mode 100644 CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs create mode 100644 CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj create mode 100644 CPE200Lab1/CPE200Lab1Test/CalculatorEngineTests.cs create mode 100644 CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs create mode 100644 CPE200Lab1/CPE200Lab1Test/RPNCalculatorEngineTests.cs create mode 100644 CPE200Lab1/CPE200Lab1Test/packages.config diff --git a/CPE200Lab1/CPE200Lab1.sln b/CPE200Lab1/CPE200Lab1.sln index f67c05e2..f6539f5c 100644 --- a/CPE200Lab1/CPE200Lab1.sln +++ b/CPE200Lab1/CPE200Lab1.sln @@ -5,6 +5,8 @@ VisualStudioVersion = 15.0.26730.8 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPE200Lab1", "CPE200Lab1\CPE200Lab1.csproj", "{C2B44135-F1AC-48A9-BD70-3BE2C38C2A15}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPE200Lab1Test", "CPE200Lab1Test\CPE200Lab1Test.csproj", "{0E964631-C30F-4089-ADD6-D2F374C1E02D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -15,6 +17,10 @@ Global {C2B44135-F1AC-48A9-BD70-3BE2C38C2A15}.Debug|Any CPU.Build.0 = Debug|Any CPU {C2B44135-F1AC-48A9-BD70-3BE2C38C2A15}.Release|Any CPU.ActiveCfg = Release|Any CPU {C2B44135-F1AC-48A9-BD70-3BE2C38C2A15}.Release|Any CPU.Build.0 = Release|Any CPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/CPE200Lab1/CPE200Lab1/CPE200Lab1.csproj b/CPE200Lab1/CPE200Lab1/CPE200Lab1.csproj index 6f6bf58a..045b23ea 100644 --- a/CPE200Lab1/CPE200Lab1/CPE200Lab1.csproj +++ b/CPE200Lab1/CPE200Lab1/CPE200Lab1.csproj @@ -60,6 +60,7 @@ + ExtendForm.cs diff --git a/CPE200Lab1/CPE200Lab1/CalculatorEngine.cs b/CPE200Lab1/CPE200Lab1/CalculatorEngine.cs index fada8e70..4761bc2e 100644 --- a/CPE200Lab1/CPE200Lab1/CalculatorEngine.cs +++ b/CPE200Lab1/CPE200Lab1/CalculatorEngine.cs @@ -6,7 +6,7 @@ namespace CPE200Lab1 { - class CalculatorEngine + public class CalculatorEngine { private bool isNumber(string str) { diff --git a/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs b/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs new file mode 100644 index 00000000..4fecd032 --- /dev/null +++ b/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CPE200Lab1 +{ + public class RPNCalculatorEngine + { + public string Process(string str) + { + // your code here + return "E"; + } + } +} diff --git a/CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj b/CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj new file mode 100644 index 00000000..64c0fd9f --- /dev/null +++ b/CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj @@ -0,0 +1,75 @@ + + + + + + Debug + AnyCPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D} + Library + Properties + CPE200Lab1Test + CPE200Lab1Test + v4.6.1 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + 15.0 + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) + $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages + False + UnitTest + + + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll + + + ..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll + + + + + + + + + + + + + + + {C2B44135-F1AC-48A9-BD70-3BE2C38C2A15} + CPE200Lab1 + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + \ No newline at end of file diff --git a/CPE200Lab1/CPE200Lab1Test/CalculatorEngineTests.cs b/CPE200Lab1/CPE200Lab1Test/CalculatorEngineTests.cs new file mode 100644 index 00000000..b9491b59 --- /dev/null +++ b/CPE200Lab1/CPE200Lab1Test/CalculatorEngineTests.cs @@ -0,0 +1,247 @@ +using CPE200Lab1; +using System; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace CPE200Lab1.Tests +{ + [TestClass()] + public class CalculatorEngineTest + { + // + // Test process() + // + [TestMethod()] + public void Process_BasicPlus_Test() + { + string input = "1 + 2"; + string expected = "3"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Process_BasicMinus_Test() + { + string input = "5 - 3"; + string expected = "2"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Process_BasicMultiply_Test() + { + string input = "5 X 3"; + string expected = "15"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Process_BasicDivide_Test() + { + string input = "6 ÷ 3"; + string expected = "2"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + + [TestMethod()] + public void Process_ErrorDivideByZero_Test() + { + string input = "6 ÷ 0"; + string expected = "E"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + + [TestMethod()] + public void Process_ErrorMalformate_Test() + { + string input = "1+2"; + string expected = "E"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.Process(input); + Assert.AreEqual(expected, actual); + } + + + // + // Test calculate() + // + [TestMethod()] + public void Calculate_BasicPlus_Test() + { + string firstOperand = "1"; + string secondOperand = "2"; + string expected = "3"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("+", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicNegativePlus_Test() + { + string firstOperand = "-1"; + string secondOperand = "2"; + string expected = "1"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("+", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicMinus_Test() + { + string firstOperand = "2"; + string secondOperand = "1"; + string expected = "1"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("-", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicNegativeMinus_Test() + { + string firstOperand = "2"; + string secondOperand = "-1"; + string expected = "3"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("-", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + public void Calculate_BasicMinusNegative_Test() + { + string firstOperand = "1"; + string secondOperand = "2"; + string expected = "-1"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("-", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicMultiply_Test() + { + string firstOperand = "2"; + string secondOperand = "2"; + string expected = "4"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("X", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicNegativeMultiply_Test() + { + string firstOperand = "-2"; + string secondOperand = "2"; + string expected = "-4"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("X", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicDivide_Test() + { + string firstOperand = "4"; + string secondOperand = "2"; + string expected = "2"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("÷", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_BasicNegativeDivide_Test() + { + string firstOperand = "-4"; + string secondOperand = "2"; + string expected = "-2"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("÷", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + [TestMethod()] + public void Calculate_DivideByZero_Test() + { + string firstOperand = "4"; + string secondOperand = "0"; + string expected = "E"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.calculate("÷", firstOperand, secondOperand); + Assert.AreEqual(expected, actual); + } + + + // + // Test Unary() + // + [TestMethod()] + public void UnaryCalculate_BasicSquareRoot_Test() + { + string operand = "4"; + string expected = "2"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.unaryCalculate("√", operand); + Assert.AreEqual(expected, actual); + } + + [TestMethod()] + public void UnaryCalculate_BasicOneOverX_Test() + { + string operand = "4"; + string expected = "0.25"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.unaryCalculate("1/x", operand); + Assert.AreEqual(expected, actual); + } + + [TestMethod()] + public void UnaryCalculate_ErrorOneOverX_Test() + { + string operand = "0"; + string expected = "E"; + string actual; + + CalculatorEngine engine = new CalculatorEngine(); + actual = engine.unaryCalculate("1/x", operand); + Assert.AreEqual(expected, actual); + } + } +} + diff --git a/CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs b/CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..77e29401 --- /dev/null +++ b/CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("CPE200Lab1Test")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("CPE200Lab1Test")] +[assembly: AssemblyCopyright("Copyright © 2018")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +[assembly: ComVisible(false)] + +[assembly: Guid("0e964631-c30f-4089-add6-d2f374c1e02d")] + +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CPE200Lab1/CPE200Lab1Test/RPNCalculatorEngineTests.cs b/CPE200Lab1/CPE200Lab1Test/RPNCalculatorEngineTests.cs new file mode 100644 index 00000000..e0d5198c --- /dev/null +++ b/CPE200Lab1/CPE200Lab1Test/RPNCalculatorEngineTests.cs @@ -0,0 +1,52 @@ +using Microsoft.VisualStudio.TestTools.UnitTesting; +using CPE200Lab1; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CPE200Lab1.Tests +{ + [TestClass()] + public class RPNCalculatorEngineTests + { + [TestMethod()] + public void Process_Basic_Test() + { + RPNCalculatorEngine r = new RPNCalculatorEngine(); + Assert.AreEqual("2", r.Process("1 1 +")); + Assert.AreEqual("1", r.Process("3 2 -")); + Assert.AreEqual("6", r.Process("3 2 X")); + Assert.AreEqual("2", r.Process("4 2 ÷")); + Assert.AreEqual("0", r.Process("1 -1 +")); + Assert.AreEqual("5", r.Process("3 -2 -")); + Assert.AreEqual("-1", r.Process("2 3 -")); + Assert.AreEqual("-6", r.Process("3 -2 X")); + Assert.AreEqual("-2", r.Process("-4 2 ÷")); + } + + [TestMethod()] + public void Process_Complex_Test() + { + RPNCalculatorEngine r = new RPNCalculatorEngine(); + Assert.AreEqual("8", r.Process("1 3 + 2 X")); + Assert.AreEqual("5", r.Process("1 3 2 + X")); + Assert.AreEqual("-5", r.Process("1 2 3 4 + - X")); + } + + [TestMethod()] + public void Process_Error_Test() + { + RPNCalculatorEngine r = new RPNCalculatorEngine(); + Assert.AreEqual("E", r.Process("1")); + Assert.AreEqual("E", r.Process("1 +")); + Assert.AreEqual("E", r.Process("1 + 1")); + Assert.AreEqual("E", r.Process("1 1 1 +")); + Assert.AreEqual("E", r.Process("+")); + Assert.AreEqual("E", r.Process("+ 1")); + Assert.AreEqual("E", r.Process("+ 1 1")); + Assert.AreEqual("E", r.Process("1 1 1 + + +")); + } + } +} \ No newline at end of file diff --git a/CPE200Lab1/CPE200Lab1Test/packages.config b/CPE200Lab1/CPE200Lab1Test/packages.config new file mode 100644 index 00000000..102a45c0 --- /dev/null +++ b/CPE200Lab1/CPE200Lab1Test/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From c7a117e34a6045e523af54ee2c02944ba693a7a3 Mon Sep 17 00:00:00 2001 From: Pruet Boonma Date: Tue, 18 Sep 2018 10:52:20 +0700 Subject: [PATCH 3/3] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c7567369..b6909a9d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Lab2 -RPN Calculator +# Lab3 +Debug/Exception handling