From 19a1ddb334c4a76a9652b5accf2b2cd52127f79d Mon Sep 17 00:00:00 2001 From: Timerix22 Date: Tue, 26 Dec 2023 01:33:41 +0600 Subject: [PATCH] unit tests --- .../ComplicatedExpressionTests.cs | 29 +++++++ SharpCalculator.Tests/FunctionTests.cs | 81 +++++++++++++++++++ SharpCalculator.Tests/GlobalUsings.cs | 4 + SharpCalculator.Tests/OperatorTests.cs | 57 +++++++++++++ .../SharpCalculator.Tests.csproj | 28 +++++++ SharpCalculator.sln | 6 ++ 6 files changed, 205 insertions(+) create mode 100644 SharpCalculator.Tests/ComplicatedExpressionTests.cs create mode 100644 SharpCalculator.Tests/FunctionTests.cs create mode 100644 SharpCalculator.Tests/GlobalUsings.cs create mode 100644 SharpCalculator.Tests/OperatorTests.cs create mode 100644 SharpCalculator.Tests/SharpCalculator.Tests.csproj diff --git a/SharpCalculator.Tests/ComplicatedExpressionTests.cs b/SharpCalculator.Tests/ComplicatedExpressionTests.cs new file mode 100644 index 0000000..bd9b411 --- /dev/null +++ b/SharpCalculator.Tests/ComplicatedExpressionTests.cs @@ -0,0 +1,29 @@ +namespace SharpCalculator.Tests; + +public class ComplicatedExpressionTests +{ + public ComplicatedExpressionTests() + { + CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; + } + + [Theory] + [InlineData(0.9,2,3)] + public void Expression1(double a, double b, double c) => + Assert.Equal( a/(b+c), Calculator.Calculate($"({a})/(({b})+({c}))")); + + [Theory] + [InlineData(0.9,2,3)] + public void Expression2(double a, double b, double c) => + Assert.Equal( Math.Sin(a)-b*Math.Cos(c), Calculator.Calculate($"sin(({a}))-(({b})*cos(({c})))")); + + [Theory] + [InlineData(0.9,2,3)] + public void Expression3(double a, double b, double c) => + Assert.Equal( a*Math.Pow(b,c)+a*Math.Pow(b,c+1)+a*Math.Pow(b,c+2), Calculator.Calculate($"({a})*({b})^({c}) + ({a})*({b})^({c+1}) + ({a})*({b})^({c+2})")); + + [Theory] + [InlineData(0.9,2,3)] + public void Expression4(double a, double b, double c) => + Assert.Equal(a/(b+Math.Tan(c)), Calculator.Calculate($"({a})/(({b})+tan(({c})))")); +} \ No newline at end of file diff --git a/SharpCalculator.Tests/FunctionTests.cs b/SharpCalculator.Tests/FunctionTests.cs new file mode 100644 index 0000000..c59c083 --- /dev/null +++ b/SharpCalculator.Tests/FunctionTests.cs @@ -0,0 +1,81 @@ +namespace SharpCalculator.Tests; + +public class FunctionTests +{ + public FunctionTests() + { + CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; + } + + [Theory] + [InlineData(5)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Sin(double a) => + Assert.Equal(Math.Sin(a), Calculator.Calculate($"sin({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Cos(double a) => + Assert.Equal(Math.Cos(a), Calculator.Calculate($"cos({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Tan(double a) => + Assert.Equal(Math.Tan(a), Calculator.Calculate($"tan({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Ctg(double a) => + Assert.Equal(1 / Math.Tan(a), Calculator.Calculate($"ctg({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Asin(double a) => + Assert.Equal( Math.Asin(a), Calculator.Calculate($"asin({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Acos(double a) => + Assert.Equal( Math.Acos(a), Calculator.Calculate($"acos({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Atan(double a) => + Assert.Equal( Math.Atan(a), Calculator.Calculate($"atan({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Actg(double a) => + Assert.Equal( Math.Atan(1 / a), Calculator.Calculate($"actg({a})")); + + [Theory] + [InlineData(0.9)] + [InlineData(1)] + [InlineData(-3)] + [InlineData(-2)] + public void Ln(double a) => + Assert.Equal( Math.Log(a), Calculator.Calculate($"ln({a})")); +} \ No newline at end of file diff --git a/SharpCalculator.Tests/GlobalUsings.cs b/SharpCalculator.Tests/GlobalUsings.cs new file mode 100644 index 0000000..85c7384 --- /dev/null +++ b/SharpCalculator.Tests/GlobalUsings.cs @@ -0,0 +1,4 @@ +global using System; +global using System.Globalization; +global using Xunit; +global using FusionCalculator; diff --git a/SharpCalculator.Tests/OperatorTests.cs b/SharpCalculator.Tests/OperatorTests.cs new file mode 100644 index 0000000..d8876e1 --- /dev/null +++ b/SharpCalculator.Tests/OperatorTests.cs @@ -0,0 +1,57 @@ +namespace SharpCalculator.Tests; + +public class OperatorTests +{ + public OperatorTests() + { + CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture; + } + + [Theory] + [InlineData(15,5)] + [InlineData(13,-6)] + [InlineData(-1,-6)] + [InlineData(-13,6)] + public void Sum(double a,double b) => + Assert.Equal(a+b, Calculator.Calculate($"({a})+({b})")); + + [Theory] + [InlineData(15,5)] + [InlineData(13,-6)] + [InlineData(-1,-6)] + [InlineData(-13,6)] + public void Subtract(double a,double b) => + Assert.Equal(a-b, Calculator.Calculate($"({a})-({b})")); + + [Theory] + [InlineData(15,5)] + [InlineData(13,-6)] + [InlineData(-1,-6)] + [InlineData(-13,6)] + public void Multiplying(double a,double b) => + Assert.Equal(a*b, Calculator.Calculate($"({a})*({b})")); + + [Theory] + [InlineData(15,5)] + [InlineData(24,-6)] + [InlineData(-12,-6)] + [InlineData(-36,6)] + public void Dividing(double a,double b) => + Assert.Equal(a/b, Calculator.Calculate($"({a})/({b})")); + + [Theory] + [InlineData(2,5)] + [InlineData(1,-1)] + [InlineData(-3,-4)] + [InlineData(-2,2)] + public void Power(double a,double b) => + Assert.Equal(Math.Pow(a,b), Calculator.Calculate($"({a})^({b})")); + + [Theory] + [InlineData(5,2)] + [InlineData(1,-1)] + [InlineData(-3,-2)] + [InlineData(-2,2)] + public void Mod(double a,double b) => + Assert.Equal( a%b, Calculator.Calculate($"({a})%({b})")); +} \ No newline at end of file diff --git a/SharpCalculator.Tests/SharpCalculator.Tests.csproj b/SharpCalculator.Tests/SharpCalculator.Tests.csproj new file mode 100644 index 0000000..e656b1d --- /dev/null +++ b/SharpCalculator.Tests/SharpCalculator.Tests.csproj @@ -0,0 +1,28 @@ + + + + net8.0 + disable + enable + false + true + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + diff --git a/SharpCalculator.sln b/SharpCalculator.sln index a1c997e..4763dc8 100644 --- a/SharpCalculator.sln +++ b/SharpCalculator.sln @@ -11,6 +11,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "solution_items", "solution_ README.md = README.md EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SharpCalculator.Tests", "SharpCalculator.Tests\SharpCalculator.Tests.csproj", "{E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -25,5 +27,9 @@ Global {8EA39217-DEBD-493B-A19C-5505B58E03FA}.Debug|Any CPU.Build.0 = Debug|Any CPU {8EA39217-DEBD-493B-A19C-5505B58E03FA}.Release|Any CPU.ActiveCfg = Release|Any CPU {8EA39217-DEBD-493B-A19C-5505B58E03FA}.Release|Any CPU.Build.0 = Release|Any CPU + {E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E929E48D-D11B-4FB5-AC6F-D0D50E2B3BD1}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection EndGlobal