Skip to content

Commit f3276ae

Browse files
committed
Moving unit tests, beginning to add benchmarks
1 parent 9d61a11 commit f3276ae

9 files changed

+146
-40
lines changed

ColorChord.NET.sln

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
99
.editorconfig = .editorconfig
1010
EndProjectSection
1111
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ColorChordTests", "ColorChordTests\ColorChordTests.csproj", "{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}"
13-
EndProject
1412
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ColorChord.NET-API", "ColorChord.NET-API\ColorChord.NET-API.csproj", "{2851D19F-7B96-4EA3-8438-90F186C07CC0}"
1513
EndProject
1614
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extensions", "Extensions", "{9C6DF1A6-92A4-4CC9-99C5-C9CFBECB6E09}"
@@ -31,6 +29,12 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ImageOutput", "Extensions\I
3129
EndProject
3230
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gen2DFTLib", "Gen2DFTLib\Gen2DFTLib.csproj", "{DD8C6573-7C5B-4FD7-BC18-7E4735C665D3}"
3331
EndProject
32+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
33+
EndProject
34+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTests", "Tests\UnitTests\UnitTests.csproj", "{9D1DD2CD-7B04-4472-4377-027563F356CA}"
35+
EndProject
36+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Benchmarks", "Tests\Benchmarks\Benchmarks.csproj", "{5DA8E889-98CF-29ED-F1F6-EA6647177338}"
37+
EndProject
3438
Global
3539
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3640
Debug|Any CPU = Debug|Any CPU
@@ -53,18 +57,6 @@ Global
5357
{8FD047CD-693D-4D5A-8C1E-802101FCC54E}.Release|x64.Build.0 = Release|Any CPU
5458
{8FD047CD-693D-4D5A-8C1E-802101FCC54E}.Release|x86.ActiveCfg = Release|Any CPU
5559
{8FD047CD-693D-4D5A-8C1E-802101FCC54E}.Release|x86.Build.0 = Release|Any CPU
56-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|Any CPU.Build.0 = Debug|Any CPU
58-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|x64.ActiveCfg = Debug|Any CPU
59-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|x64.Build.0 = Debug|Any CPU
60-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|x86.ActiveCfg = Debug|Any CPU
61-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Debug|x86.Build.0 = Debug|Any CPU
62-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|Any CPU.ActiveCfg = Release|Any CPU
63-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|Any CPU.Build.0 = Release|Any CPU
64-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|x64.ActiveCfg = Release|Any CPU
65-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|x64.Build.0 = Release|Any CPU
66-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|x86.ActiveCfg = Release|Any CPU
67-
{EFB82CAB-785E-48A4-A2BD-CA1AC191C324}.Release|x86.Build.0 = Release|Any CPU
6860
{2851D19F-7B96-4EA3-8438-90F186C07CC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
6961
{2851D19F-7B96-4EA3-8438-90F186C07CC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
7062
{2851D19F-7B96-4EA3-8438-90F186C07CC0}.Debug|x64.ActiveCfg = Debug|Any CPU
@@ -137,6 +129,30 @@ Global
137129
{DD8C6573-7C5B-4FD7-BC18-7E4735C665D3}.Release|x64.Build.0 = Release|Any CPU
138130
{DD8C6573-7C5B-4FD7-BC18-7E4735C665D3}.Release|x86.ActiveCfg = Release|Any CPU
139131
{DD8C6573-7C5B-4FD7-BC18-7E4735C665D3}.Release|x86.Build.0 = Release|Any CPU
132+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
133+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
134+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|x64.ActiveCfg = Debug|Any CPU
135+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|x64.Build.0 = Debug|Any CPU
136+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|x86.ActiveCfg = Debug|Any CPU
137+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Debug|x86.Build.0 = Debug|Any CPU
138+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
139+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|Any CPU.Build.0 = Release|Any CPU
140+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|x64.ActiveCfg = Release|Any CPU
141+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|x64.Build.0 = Release|Any CPU
142+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|x86.ActiveCfg = Release|Any CPU
143+
{9D1DD2CD-7B04-4472-4377-027563F356CA}.Release|x86.Build.0 = Release|Any CPU
144+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
145+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|Any CPU.Build.0 = Debug|Any CPU
146+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|x64.ActiveCfg = Debug|Any CPU
147+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|x64.Build.0 = Debug|Any CPU
148+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|x86.ActiveCfg = Debug|Any CPU
149+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Debug|x86.Build.0 = Debug|Any CPU
150+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|Any CPU.ActiveCfg = Release|Any CPU
151+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|Any CPU.Build.0 = Release|Any CPU
152+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|x64.ActiveCfg = Release|Any CPU
153+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|x64.Build.0 = Release|Any CPU
154+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|x86.ActiveCfg = Release|Any CPU
155+
{5DA8E889-98CF-29ED-F1F6-EA6647177338}.Release|x86.Build.0 = Release|Any CPU
140156
EndGlobalSection
141157
GlobalSection(SolutionProperties) = preSolution
142158
HideSolutionNode = FALSE
@@ -146,6 +162,8 @@ Global
146162
{58EA93DE-89DD-4BBD-9633-9BD3A50A57A2} = {9C6DF1A6-92A4-4CC9-99C5-C9CFBECB6E09}
147163
{5B4403E3-7DB6-4ADA-A52F-C80F0E01892A} = {9C6DF1A6-92A4-4CC9-99C5-C9CFBECB6E09}
148164
{A1C693C2-8B33-44C8-8A06-F9D1C881FFA1} = {9C6DF1A6-92A4-4CC9-99C5-C9CFBECB6E09}
165+
{9D1DD2CD-7B04-4472-4377-027563F356CA} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
166+
{5DA8E889-98CF-29ED-F1F6-EA6647177338} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
149167
EndGlobalSection
150168
GlobalSection(ExtensibilityGlobals) = postSolution
151169
SolutionGuid = {6679A80E-95B6-4840-BC13-0D43DF7E70FD}

ColorChordTests/ColorChordTests.csproj

Lines changed: 0 additions & 23 deletions
This file was deleted.

Tests/Benchmarks/Benchmarks.csproj

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net8.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
<RootNamespace>ColorChord.NET.Tests.Benchmarks</RootNamespace>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="BenchmarkDotNet" Version="0.14.0" />
13+
<PackageReference Include="BenchmarkDotNet.Diagnostics.Windows" Version="0.14.0" />
14+
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectReference Include="..\..\ColorChord.NET-API\ColorChord.NET-API.csproj" />
18+
<ProjectReference Include="..\..\ColorChord.NET\ColorChord.NET.csproj" />
19+
</ItemGroup>
20+
21+
</Project>

Tests/Benchmarks/BenchmarksTop.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
using BenchmarkDotNet.Running;
2+
3+
namespace ColorChord.NET.Tests.Benchmarks;
4+
5+
public class BenchmarksTop
6+
{
7+
public static void Main(string[] args)
8+
{
9+
BenchmarkSwitcher.FromAssembly(typeof(BenchmarksTop).Assembly).Run(args);
10+
}
11+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using BenchmarkDotNet.Attributes;
2+
using BenchmarkDotNet.Diagnosers;
3+
using ColorChord.NET.API.Visualizers;
4+
5+
namespace ColorChord.NET.Tests.Benchmarks;
6+
7+
[MemoryDiagnoser]
8+
[HardwareCounters(HardwareCounter.BranchInstructions, HardwareCounter.BranchMispredictions)]
9+
[DisassemblyDiagnoser]
10+
public class UtilitiesBechmarks
11+
{
12+
private const int ARRAY_SIZE = 8192;
13+
private const int RAND_SEED = 0x811426;
14+
15+
[GlobalSetup]
16+
public void SetupUtilities()
17+
{
18+
Random Rand = new(RAND_SEED);
19+
20+
for (int i = 0; i < ZeroToOneFloats.Length; i++) { ZeroToOneFloats[i] = Rand.NextSingle(); }
21+
}
22+
23+
public float[] ZeroToOneFloats = new float[ARRAY_SIZE];
24+
25+
[Benchmark]
26+
public float EmptyBaseline()
27+
{
28+
float Result = 0F;
29+
foreach (float Input in ZeroToOneFloats) { Result += Input; }
30+
return Result;
31+
}
32+
33+
[Benchmark]
34+
public float VisualizerTools_CCToHue()
35+
{
36+
float Result = 0F;
37+
foreach (float Input in ZeroToOneFloats) { Result += VisualizerTools.CCToHue(Input); }
38+
return Result;
39+
}
40+
41+
[Benchmark]
42+
public float VisualizerTools_CCtoRGB()
43+
{
44+
float Result = 0F;
45+
foreach (float Input in ZeroToOneFloats) { Result += VisualizerTools.CCToRGB(Input, 0.83F, 0.96F); }
46+
return Result;
47+
}
48+
49+
[Benchmark]
50+
public uint VisualizerTools_HSVToRGB()
51+
{
52+
uint Result = 0;
53+
foreach (float Input in ZeroToOneFloats) { Result += VisualizerTools.HSVToRGB(Input, 0.54F, 0.17F); }
54+
return Result;
55+
}
56+
57+
// TODO: VisualizerTools.RGBToHSV()
58+
}

ColorChordTests/UnitTests/ConfigTests.cs renamed to Tests/UnitTests/ConfigTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
using System;
55
using System.Collections.Generic;
66

7-
namespace ColorChordTests.UnitTests
7+
namespace ColorChord.NET.Tests.UnitTests
88
{
99
[TestClass]
1010
public class ConfigTests

ColorChordTests/UnitTests/Gen2DFTTests.cs renamed to Tests/UnitTests/Gen2DFTTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using System.Text;
1111
using System.Threading.Tasks;
1212

13-
namespace ColorChordTests.UnitTests;
13+
namespace ColorChord.NET.Tests.UnitTests;
1414

1515
[TestClass]
1616
public class Gen2DFTTests

Tests/UnitTests/UnitTests.csproj

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net8.0</TargetFramework>
5+
6+
<IsPackable>false</IsPackable>
7+
8+
<RootNamespace>ColorChord.NET.Tests.UnitTests</RootNamespace>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
13+
<PackageReference Include="MSTest.TestAdapter" Version="3.8.2" />
14+
<PackageReference Include="MSTest.TestFramework" Version="3.8.2" />
15+
</ItemGroup>
16+
17+
<ItemGroup>
18+
<ProjectReference Include="..\..\ColorChord.NET\ColorChord.NET.csproj" />
19+
</ItemGroup>
20+
21+
</Project>

ColorChordTests/UnitTests/UtilitiesTests.cs renamed to Tests/UnitTests/UtilitiesTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using Microsoft.VisualStudio.TestTools.UnitTesting;
33
using System.Numerics;
44

5-
namespace ColorChordTests.UnitTests;
5+
namespace ColorChord.NET.Tests.UnitTests;
66

77
[TestClass]
88
public class UtilitiesTests

0 commit comments

Comments
 (0)