diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index d9f11db6..35673a59 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -30,7 +30,7 @@ jobs: - name: Setup .NET Core SDK uses: actions/setup-dotnet@v3 with: - dotnet-version: 7.0.100 + dotnet-version: 8.0.x - name: Install dependencies run: | python -m pip install --upgrade pip @@ -42,7 +42,7 @@ jobs: - name: Start session run: 'launchable record session --build "$GITHUB_RUN_ID" > test_session.txt' - name: Run test - run: dotnet test --logger:"nunit;LogFilePath=test-result.xml" + run: dotnet test --logger:"nunit;LogFilePath=test-result.xml" --logger:"junit;LogFilePath=junit-result.xml" - name: Record test results run: launchable record test --session "$(cat test_session.txt)" dotnet test-result.xml if: always() diff --git a/dotnet/AddCalculator.cs b/dotnet/AddCalculator.cs new file mode 100644 index 00000000..8ddfc174 --- /dev/null +++ b/dotnet/AddCalculator.cs @@ -0,0 +1,6 @@ +namespace rocket_car_dotnet; + +public class AddCalculator +{ + public int Add(int a, int b) => a + b; +} diff --git a/dotnet/AddCalculatorTest.cs b/dotnet/AddCalculatorTest.cs new file mode 100644 index 00000000..5262317a --- /dev/null +++ b/dotnet/AddCalculatorTest.cs @@ -0,0 +1,21 @@ +namespace rocket_car_dotnet; + +public class AddCalculatorTest +{ + private readonly AddCalculator _calculator = new(); + + [Test] + public void TestAdd() + { + Assert.That(_calculator.Add(2, 3), Is.EqualTo(5)); + Assert.That(_calculator.Add(-1, 1), Is.EqualTo(0)); + Assert.That(_calculator.Add(0, 0), Is.EqualTo(0)); + } + + // Intentionally failing test to verify failure reporting in test reports + [Test] + public void TestAddFailing() + { + Assert.That(_calculator.Add(2, 3), Is.EqualTo(999)); + } +} diff --git a/dotnet/Calculator.cs b/dotnet/Calculator.cs new file mode 100644 index 00000000..9eb26e6b --- /dev/null +++ b/dotnet/Calculator.cs @@ -0,0 +1,16 @@ +namespace rocket_car_dotnet; + +public class Calculator +{ + private readonly AddCalculator _add = new(); + private readonly SubtractCalculator _subtract = new(); + private readonly MultiplyCalculator _multiply = new(); + private readonly DivideCalculator _divide = new(); + private readonly PowerCalculator _power = new(); + + public int Add(int a, int b) => _add.Add(a, b); + public int Subtract(int a, int b) => _subtract.Subtract(a, b); + public int Multiply(int a, int b) => _multiply.Multiply(a, b); + public double Divide(double a, double b) => _divide.Divide(a, b); + public double Power(double base_, double exponent) => _power.Power(base_, exponent); +} diff --git a/dotnet/DivideCalculator.cs b/dotnet/DivideCalculator.cs new file mode 100644 index 00000000..965e0cf4 --- /dev/null +++ b/dotnet/DivideCalculator.cs @@ -0,0 +1,11 @@ +namespace rocket_car_dotnet; + +public class DivideCalculator +{ + public double Divide(double a, double b) + { + if (b == 0) + throw new ArgumentException("Cannot divide by zero"); + return a / b; + } +} diff --git a/dotnet/DivideCalculatorTest.cs b/dotnet/DivideCalculatorTest.cs new file mode 100644 index 00000000..72144f86 --- /dev/null +++ b/dotnet/DivideCalculatorTest.cs @@ -0,0 +1,27 @@ +namespace rocket_car_dotnet; + +public class DivideCalculatorTest +{ + private readonly DivideCalculator _calculator = new(); + + [Test] + public void TestDivide() + { + Assert.That(_calculator.Divide(10, 2), Is.EqualTo(5.0)); + Assert.That(_calculator.Divide(9, 3), Is.EqualTo(3.0)); + Assert.That(_calculator.Divide(-10, 2), Is.EqualTo(-5.0)); + } + + [Test] + public void TestDivideByZero() + { + Assert.Throws(() => _calculator.Divide(10, 0)); + } + + // Intentionally failing test to verify failure reporting in test reports + [Test] + public void TestDivideFailing() + { + Assert.That(_calculator.Divide(10, 2), Is.EqualTo(99.0)); + } +} diff --git a/dotnet/Example.cs b/dotnet/Example.cs deleted file mode 100644 index 2b7db0bc..00000000 --- a/dotnet/Example.cs +++ /dev/null @@ -1,18 +0,0 @@ -public class Example -{ - public static int add(int a, int b) { - return a + b; - } - - public static int sub(int a, int b) { - return a - b; - } - - public static int mul(int a, int b) { - return a * b; - } - - public static int div(int a, int b) { - return a / b; - } -} \ No newline at end of file diff --git a/dotnet/ExampleTest.cs b/dotnet/ExampleTest.cs deleted file mode 100644 index 1980fe24..00000000 --- a/dotnet/ExampleTest.cs +++ /dev/null @@ -1,37 +0,0 @@ -namespace rocket_car_dotnet; - -public class ExampleTest -{ - [SetUp] - public void Setup() - { - } - - [Test] - public void TestAdd() - { - Assert.That(Example.add(2, 3), Is.EqualTo(5)); - Assert.That(Example.add(4, 3), Is.EqualTo(7)); - } - - [Test] - public void TestSub() - { - Assert.That(Example.sub(4, 2), Is.EqualTo(2)); - Assert.That(Example.sub(4, -2), Is.EqualTo(2)); // 6 is correct - } - - [Test] - public void TestMul() - { - Assert.That(Example.mul(2, 5), Is.EqualTo(10)); - Assert.That(Example.mul(5, 5), Is.EqualTo(10)); // 25 is correct - } - - [Test] - public void TestDiv() - { - Assert.That(Example.div(10, 5), Is.EqualTo(2)); - Assert.That(Example.div(5, 10), Is.EqualTo(0.5)); // 0 is correct - } -} diff --git a/dotnet/MultiplyCalculator.cs b/dotnet/MultiplyCalculator.cs new file mode 100644 index 00000000..20548bc6 --- /dev/null +++ b/dotnet/MultiplyCalculator.cs @@ -0,0 +1,6 @@ +namespace rocket_car_dotnet; + +public class MultiplyCalculator +{ + public int Multiply(int a, int b) => a * b; +} diff --git a/dotnet/MultiplyCalculatorTest.cs b/dotnet/MultiplyCalculatorTest.cs new file mode 100644 index 00000000..d10b2241 --- /dev/null +++ b/dotnet/MultiplyCalculatorTest.cs @@ -0,0 +1,14 @@ +namespace rocket_car_dotnet; + +public class MultiplyCalculatorTest +{ + private readonly MultiplyCalculator _calculator = new(); + + [Test] + public void TestMultiply() + { + Assert.That(_calculator.Multiply(2, 3), Is.EqualTo(6)); + Assert.That(_calculator.Multiply(-2, 3), Is.EqualTo(-6)); + Assert.That(_calculator.Multiply(0, 100), Is.EqualTo(0)); + } +} diff --git a/dotnet/PowerCalculator.cs b/dotnet/PowerCalculator.cs new file mode 100644 index 00000000..8439d7f3 --- /dev/null +++ b/dotnet/PowerCalculator.cs @@ -0,0 +1,6 @@ +namespace rocket_car_dotnet; + +public class PowerCalculator +{ + public double Power(double base_, double exponent) => Math.Pow(base_, exponent); +} diff --git a/dotnet/PowerCalculatorTest.cs b/dotnet/PowerCalculatorTest.cs new file mode 100644 index 00000000..b37f86d8 --- /dev/null +++ b/dotnet/PowerCalculatorTest.cs @@ -0,0 +1,14 @@ +namespace rocket_car_dotnet; + +public class PowerCalculatorTest +{ + private readonly PowerCalculator _calculator = new(); + + [Test] + public void TestPower() + { + Assert.That(_calculator.Power(2, 3), Is.EqualTo(8.0)); + Assert.That(_calculator.Power(5, 2), Is.EqualTo(25.0)); + Assert.That(_calculator.Power(10, 0), Is.EqualTo(1.0)); + } +} diff --git a/dotnet/README.md b/dotnet/README.md index 0a8a4e62..7fce32ac 100644 --- a/dotnet/README.md +++ b/dotnet/README.md @@ -14,10 +14,10 @@ Launchable recorded build test to workspace launchableinc/example with commits f | ../ | ../ | 5fa3dc1aa3dc34589765898ec285e810b0bea422 | # Run test -$ dotnet test --logger:"nunit;LogFilePath=test-result.xml" +$ dotnet test --logger:"nunit;LogFilePath=test-result.xml" --logger:"junit;LogFilePath=junit-result.xml" ... -Failed! - Failed: 3, Passed: 1, Skipped: 0, Total: 4, Duration: 24 ms - rocket-car-dotnet.dll (net7.0) +Failed! - Failed: 3, Passed: 1, Skipped: 0, Total: 4, Duration: 24 ms - rocket-car-dotnet.dll (net8.0) $ launchable record tests --build ${BUILD_NAME} dotnet ./test-result.xml @@ -57,7 +57,7 @@ FullyQualifiedName!=rocket_car_dotnet.ExampleTest.TestDiv $ dotnet test --filter $(cat subset.txt) ... -Failed! - Failed: 2, Passed: 1, Skipped: 0, Total: 3, Duration: 25 ms - rocket-car-dotnet.dll (net7.0) +Failed! - Failed: 2, Passed: 1, Skipped: 0, Total: 3, Duration: 25 ms - rocket-car-dotnet.dll (net8.0) ``` ## Split subset for parallel test runs diff --git a/dotnet/SubtractCalculator.cs b/dotnet/SubtractCalculator.cs new file mode 100644 index 00000000..a857ec37 --- /dev/null +++ b/dotnet/SubtractCalculator.cs @@ -0,0 +1,6 @@ +namespace rocket_car_dotnet; + +public class SubtractCalculator +{ + public int Subtract(int a, int b) => a - b; +} diff --git a/dotnet/SubtractCalculatorTest.cs b/dotnet/SubtractCalculatorTest.cs new file mode 100644 index 00000000..427f0d82 --- /dev/null +++ b/dotnet/SubtractCalculatorTest.cs @@ -0,0 +1,14 @@ +namespace rocket_car_dotnet; + +public class SubtractCalculatorTest +{ + private readonly SubtractCalculator _calculator = new(); + + [Test] + public void TestSubtract() + { + Assert.That(_calculator.Subtract(5, 3), Is.EqualTo(2)); + Assert.That(_calculator.Subtract(0, 5), Is.EqualTo(-5)); + Assert.That(_calculator.Subtract(10, 10), Is.EqualTo(0)); + } +} diff --git a/dotnet/rocket-car-dotnet.csproj b/dotnet/rocket-car-dotnet.csproj index 15bb18f8..007df42a 100644 --- a/dotnet/rocket-car-dotnet.csproj +++ b/dotnet/rocket-car-dotnet.csproj @@ -1,7 +1,7 @@ - net7.0 + net8.0 rocket_car_dotnet enable enable @@ -10,12 +10,13 @@ - - - - - - + + + + + + + \ No newline at end of file