diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 64db9d16..76134e56 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: 'Run App , ' +name: 'Run App Samarasinghe, Rometh' on: [push, pull_request] @@ -6,4 +6,12 @@ jobs: build-and-test: runs-on: ubuntu-latest steps: - - run: echo "Hello, World!" + - uses: actions/checkout@v2 + - name: install dotnet + uses: actions/setup-dotnet@v4 + with: + dotnet-version: '8.x' + - name: build + run: dotnet build + - name: run unit tests + run: dotnet test diff --git a/Console/Program.cs b/Console/Program.cs index 56bb8606..df9463fc 100644 --- a/Console/Program.cs +++ b/Console/Program.cs @@ -86,6 +86,18 @@ public static double Divide(string x, string y) // Implement this method following a similar pattern as above public static double Power(string x, string y) { - return 0.0; + try + { + return Math.Pow(double.Parse(x), double.Parse(y)); + + } + catch (FormatException) + { + throw new FormatException("Both x and y must be valid numbers."); + } + catch (ArgumentNullException) + { + throw new ArgumentNullException("Both x and y must be provided."); + } } } diff --git a/Tests/UnitTests.cs b/Tests/UnitTests.cs index a2d3bd18..a63467aa 100644 --- a/Tests/UnitTests.cs +++ b/Tests/UnitTests.cs @@ -26,4 +26,110 @@ public void Add_Null_Patino() Assert.ThrowsException(() => Program.Add(null, "1")); Assert.ThrowsException(() => Program.Add(null, null)); } + +} + +[TestClass] +public class Subtraction +{ + [TestMethod] + public void Subtract_Valid_Rometh() + { + Assert.AreEqual(-1, Program.Subtract("1", "2")); + Assert.AreEqual(1, Program.Subtract("3", "2")); + Assert.AreEqual(-2, Program.Subtract("5", "7")); + } + [TestMethod] + public void Subtract_Invalid_Rometh() + { + Assert.ThrowsException(() => Program.Subtract("1", "a")); + Assert.ThrowsException(() => Program.Subtract("a", "1")); + Assert.ThrowsException(() => Program.Subtract("a", "a")); + } + [TestMethod] + public void Subtract_Null_Rometh() + { + Assert.ThrowsException(() => Program.Subtract("1", null)); + Assert.ThrowsException(() => Program.Subtract(null, "1")); + Assert.ThrowsException(() => Program.Subtract(null, null)); + } +} + +[TestClass] +public class Multiplication +{ + [TestMethod] + public void Multiply_Valid_Smith() + { + Assert.AreEqual(2, Program.Multiply("1", "2")); + Assert.AreEqual(6, Program.Multiply("3", "2")); + Assert.AreEqual(35, Program.Multiply("5", "7")); + } + [TestMethod] + public void Multiply_Invalid_Smith() + { + Assert.ThrowsException(() => Program.Multiply("1", "a")); + Assert.ThrowsException(() => Program.Multiply("a", "1")); + Assert.ThrowsException(() => Program.Multiply("a", "a")); + } + [TestMethod] + public void Multiply_Null_Smith() + { + Assert.ThrowsException(() => Program.Multiply("1", null)); + Assert.ThrowsException(() => Program.Multiply(null, "1")); + Assert.ThrowsException(() => Program.Multiply(null, null)); + } } + +[TestClass] +public class Division +{ + [TestMethod] + public void Divide_Valid_Jones() + { + Assert.AreEqual(0.5, Program.Divide("1", "2")); + Assert.AreEqual(1.5, Program.Divide("3", "2")); + Assert.AreEqual(0.7142857142857143, Program.Divide("5", "7")); + } + [TestMethod] + public void Divide_Invalid_Jones() + { + Assert.ThrowsException(() => Program.Divide("1", "a")); + Assert.ThrowsException(() => Program.Divide("a", "1")); + Assert.ThrowsException(() => Program.Divide("a", "a")); + } + [TestMethod] + public void Divide_Null_Jones() + { + Assert.ThrowsException(() => Program.Divide("1", null)); + Assert.ThrowsException(() => Program.Divide(null, "1")); + Assert.ThrowsException(() => Program.Divide(null, null)); + } +} + +[TestClass] +public class Power +{ + [TestMethod] + public void Power_Valid_Brown() + { + Assert.AreEqual(1, Program.Power("1", "2")); + Assert.AreEqual(9, Program.Power("3", "2")); + Assert.AreEqual(78125, Program.Power("5", "7")); + } + [TestMethod] + public void Power_Invalid_Brown() + { + Assert.ThrowsException(() => Program.Power("1", "a")); + Assert.ThrowsException(() => Program.Power("a", "1")); + Assert.ThrowsException(() => Program.Power("a", "a")); + } + [TestMethod] + public void Power_Null_Brown() + { + Assert.ThrowsException(() => Program.Power("1", null)); + Assert.ThrowsException(() => Program.Power(null, "1")); + Assert.ThrowsException(() => Program.Power(null, null)); + } +} +