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