Skip to content

Commit 4a96790

Browse files
committed
Add unit tests
#3
1 parent bf5d580 commit 4a96790

File tree

4 files changed

+152
-1
lines changed

4 files changed

+152
-1
lines changed

Plugins.ShaHashing.sln

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio Version 17
4-
VisualStudioVersion = 17.12.35728.132 d17.12
4+
VisualStudioVersion = 17.12.35728.132
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlowSynx.Plugins.ShaHashing", "src\FlowSynx.Plugins.ShaHashing.csproj", "{18678EC1-39EF-475D-82DE-A29E557E8559}"
77
EndProject
8+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{AD94629F-6984-4C21-9F4E-C8862A0D84B2}"
9+
EndProject
10+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{CDF65AD6-CC03-4A15-BB8B-605BCB9D3958}"
11+
EndProject
12+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FlowSynx.Plugins.ShaHashing.UnitTests", "tests\FlowSynx.Plugins.ShaHashing.UnitTests.csproj", "{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85}"
13+
EndProject
814
Global
915
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1016
Debug|Any CPU = Debug|Any CPU
@@ -15,8 +21,16 @@ Global
1521
{18678EC1-39EF-475D-82DE-A29E557E8559}.Debug|Any CPU.Build.0 = Debug|Any CPU
1622
{18678EC1-39EF-475D-82DE-A29E557E8559}.Release|Any CPU.ActiveCfg = Release|Any CPU
1723
{18678EC1-39EF-475D-82DE-A29E557E8559}.Release|Any CPU.Build.0 = Release|Any CPU
24+
{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25+
{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85}.Debug|Any CPU.Build.0 = Debug|Any CPU
26+
{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85}.Release|Any CPU.ActiveCfg = Release|Any CPU
27+
{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85}.Release|Any CPU.Build.0 = Release|Any CPU
1828
EndGlobalSection
1929
GlobalSection(SolutionProperties) = preSolution
2030
HideSolutionNode = FALSE
2131
EndGlobalSection
32+
GlobalSection(NestedProjects) = preSolution
33+
{18678EC1-39EF-475D-82DE-A29E557E8559} = {AD94629F-6984-4C21-9F4E-C8862A0D84B2}
34+
{3A6DF9D5-6701-48D0-96DC-6DA3CC9C4F85} = {CDF65AD6-CC03-4A15-BB8B-605BCB9D3958}
35+
EndGlobalSection
2236
EndGlobal

src/FlowSynx.Plugins.ShaHashing.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
<PackageReference Include="FlowSynx.PluginCore" Version="1.3.0" />
1717
</ItemGroup>
1818

19+
<ItemGroup>
20+
<InternalsVisibleTo Include="FlowSynx.Plugins.ShaHashing.UnitTests" />
21+
</ItemGroup>
22+
1923
<ItemGroup>
2024
<Compile Update="Resources.Designer.cs">
2125
<DesignTime>True</DesignTime>
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net9.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
<IsPackable>false</IsPackable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="coverlet.collector" Version="6.0.2" />
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
13+
<PackageReference Include="xunit" Version="2.9.2" />
14+
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2" />
15+
</ItemGroup>
16+
17+
<ItemGroup>
18+
<ProjectReference Include="..\src\FlowSynx.Plugins.ShaHashing.csproj" />
19+
</ItemGroup>
20+
21+
<ItemGroup>
22+
<Using Include="Xunit" />
23+
</ItemGroup>
24+
25+
</Project>

tests/HashHelperTests.cs

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
using System.Text;
2+
3+
namespace FlowSynx.Plugins.ShaHashing.UnitTests;
4+
5+
public class HashHelperTests
6+
{
7+
private static readonly byte[] TestInput = Encoding.UTF8.GetBytes("hello world");
8+
9+
[Theory]
10+
[InlineData("hello world", "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed")] // SHA1
11+
public void SHA1_ShouldMatchExpectedHash(string input, string expectedHex)
12+
{
13+
var actual = HashHelper.SHA1(Encoding.UTF8.GetBytes(input));
14+
Assert.Equal(expectedHex, ConvertToHex(actual));
15+
}
16+
17+
[Theory]
18+
[InlineData("hello world", "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9")] // SHA256
19+
public void SHA256_ShouldMatchExpectedHash(string input, string expectedHex)
20+
{
21+
var actual = HashHelper.SHA256(Encoding.UTF8.GetBytes(input));
22+
Assert.Equal(expectedHex, ConvertToHex(actual));
23+
}
24+
25+
[Theory]
26+
[InlineData("hello world", "fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd")] // SHA384
27+
public void SHA384_ShouldMatchExpectedHash(string input, string expectedHex)
28+
{
29+
var actual = HashHelper.SHA384(Encoding.UTF8.GetBytes(input));
30+
Assert.Equal(expectedHex, ConvertToHex(actual));
31+
}
32+
33+
[Theory]
34+
[InlineData("hello world", "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f")] // SHA512
35+
public void SHA512_ShouldMatchExpectedHash(string input, string expectedHex)
36+
{
37+
var actual = HashHelper.SHA512(Encoding.UTF8.GetBytes(input));
38+
Assert.Equal(expectedHex, ConvertToHex(actual));
39+
}
40+
41+
[Fact]
42+
public void SHA3_256_ShouldProduceCorrectLength()
43+
{
44+
var hash = HashHelper.SHA3_256(TestInput);
45+
Assert.Equal(32, hash.Length);
46+
}
47+
48+
[Fact]
49+
public void SHA3_384_ShouldProduceCorrectLength()
50+
{
51+
var hash = HashHelper.SHA3_384(TestInput);
52+
Assert.Equal(48, hash.Length);
53+
}
54+
55+
[Fact]
56+
public void SHA3_512_ShouldProduceCorrectLength()
57+
{
58+
var hash = HashHelper.SHA3_512(TestInput);
59+
Assert.Equal(64, hash.Length);
60+
}
61+
62+
[Fact]
63+
public void SHA224_ShouldProduceCorrectLength()
64+
{
65+
var hash = HashHelper.SHA224(TestInput);
66+
Assert.Equal(28, hash.Length);
67+
}
68+
69+
[Fact]
70+
public void SHA512_224_ShouldProduceCorrectLength()
71+
{
72+
var hash = HashHelper.SHA512_224(TestInput);
73+
Assert.Equal(28, hash.Length);
74+
}
75+
76+
[Fact]
77+
public void SHA512_256_ShouldProduceCorrectLength()
78+
{
79+
var hash = HashHelper.SHA512_256(TestInput);
80+
Assert.Equal(32, hash.Length);
81+
}
82+
83+
[Fact]
84+
public void SHA3_224_ShouldProduceCorrectLength()
85+
{
86+
var hash = HashHelper.SHA3_224(TestInput);
87+
Assert.Equal(28, hash.Length);
88+
}
89+
90+
[Fact]
91+
public void SHAKE128_ShouldProduceExactLength()
92+
{
93+
int len = 64;
94+
var hash = HashHelper.SHAKE128(TestInput, len);
95+
Assert.Equal(len, hash.Length);
96+
}
97+
98+
[Fact]
99+
public void SHAKE256_ShouldProduceExactLength()
100+
{
101+
int len = 64;
102+
var hash = HashHelper.SHAKE256(TestInput, len);
103+
Assert.Equal(len, hash.Length);
104+
}
105+
106+
private static string ConvertToHex(byte[] data) =>
107+
BitConverter.ToString(data).Replace("-", "").ToLowerInvariant();
108+
}

0 commit comments

Comments
 (0)