unit tests

This commit is contained in:
Timerix22 2023-12-26 01:33:41 +06:00
parent 7cf49a5a1b
commit 19a1ddb334
6 changed files with 205 additions and 0 deletions

View File

@ -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})))"));
}

View File

@ -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})"));
}

View File

@ -0,0 +1,4 @@
global using System;
global using System.Globalization;
global using Xunit;
global using FusionCalculator;

View File

@ -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})"));
}

View File

@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>disable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="xunit" Version="2.6.4" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.6">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="6.0.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FusionCalculator\FusionCalculator.csproj" />
</ItemGroup>
</Project>

View File

@ -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