diff --git a/CPE200Lab1/CPE200Lab1.sln b/CPE200Lab1/CPE200Lab1.sln index 62bb3c5c..b1434dc4 100644 --- a/CPE200Lab1/CPE200Lab1.sln +++ b/CPE200Lab1/CPE200Lab1.sln @@ -7,6 +7,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPE200Lab1", "CPE200Lab1\CP EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CPE200Lab1Tests", "CPE200Lab1Tests\CPE200Lab1Tests.csproj", "{C92330F4-DC76-46B0-970C-73126DE55500}" 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 @@ -17,10 +19,17 @@ 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 + {C92330F4-DC76-46B0-970C-73126DE55500}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {C92330F4-DC76-46B0-970C-73126DE55500}.Debug|Any CPU.Build.0 = Debug|Any CPU {C92330F4-DC76-46B0-970C-73126DE55500}.Release|Any CPU.ActiveCfg = Release|Any CPU {C92330F4-DC76-46B0-970C-73126DE55500}.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/RPNCalculatorEngine.cs b/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs index 909abce0..c05defc4 100644 --- a/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs +++ b/CPE200Lab1/CPE200Lab1/RPNCalculatorEngine.cs @@ -6,6 +6,7 @@ namespace CPE200Lab1 { + public class RPNCalculatorEngine : CalculatorEngine { public new string Process(string str) @@ -39,4 +40,14 @@ public class RPNCalculatorEngine : CalculatorEngine return result; } } + /* + 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 index b681c8f7..02d58672 100644 --- a/CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj +++ b/CPE200Lab1/CPE200Lab1Test/CPE200Lab1Test.csproj @@ -1,10 +1,21 @@  + + + + + + + Debug + AnyCPU + {0E964631-C30F-4089-ADD6-D2F374C1E02D} + Library Properties CPE200Lab1Test @@ -39,24 +50,43 @@ + + + + ..\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 @@ -66,8 +96,15 @@ 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 index ac861b50..5459514f 100644 --- a/CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs +++ b/CPE200Lab1/CPE200Lab1Test/Properties/AssemblyInfo.cs @@ -7,13 +7,17 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("CPE200Lab1Test")] -[assembly: AssemblyCopyright("Copyright © 2017")] + +[assembly: AssemblyCopyright("Copyright © 2018")] + [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] -[assembly: Guid("2bbc8667-aca7-40e0-9149-6e41bd175265")] +// Uncomment the following line if it doesn't work +//[assembly: Guid("2bbc8667-aca7-40e0-9149-6e41bd175265")] +[assembly: Guid("0e964631-c30f-4089-add6-d2f374c1e02d")] // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("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 index d8c1b909..21e44f2e 100644 --- a/CPE200Lab1/CPE200Lab1Test/packages.config +++ b/CPE200Lab1/CPE200Lab1Test/packages.config @@ -1,5 +1,10 @@  + + + + \ No newline at end of file diff --git a/README.md b/README.md index c0572c28..b6909a9d 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,2 @@ -# Lab1 -SkeletonForLab +# Lab3 +Debug/Exception handling