Initial commit: SpdUp Windows Gaming Booster v1.0.0
- .NET 8 WPF app with full MVVM architecture - One-click boost: CPU, RAM, GPU, network, services, timer resolution - Real-time system monitor (LibreHardwareMonitor) - Auto game detection (30+ games) - RAM optimizer with kernel-level cleanup - Network optimizer (TCP registry tweaks) - Service manager, process manager, shader cache cleaner - Desktop widget overlay - Debug log viewer - Custom dark gaming theme with trans pride colors - 84 unit tests (xUnit) - Inno Setup installer script - Landing page website
This commit is contained in:
@@ -0,0 +1,175 @@
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using SpdUp.Converters;
|
||||
|
||||
namespace SpdUp.Tests;
|
||||
|
||||
/// <summary>
|
||||
/// Tests for WPF value converters.
|
||||
/// </summary>
|
||||
public class ConverterTests
|
||||
{
|
||||
private static readonly CultureInfo Culture = CultureInfo.InvariantCulture;
|
||||
|
||||
// ── BoolToVisibilityConverter ─────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void BoolToVisibility_True_ReturnsVisible()
|
||||
{
|
||||
var conv = new BoolToVisibilityConverter();
|
||||
var result = conv.Convert(true, typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Visible, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BoolToVisibility_False_ReturnsCollapsed()
|
||||
{
|
||||
var conv = new BoolToVisibilityConverter();
|
||||
var result = conv.Convert(false, typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Collapsed, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BoolToVisibility_ConvertBack_Visible_ReturnsTrue()
|
||||
{
|
||||
var conv = new BoolToVisibilityConverter();
|
||||
var result = conv.ConvertBack(Visibility.Visible, typeof(bool), null!, Culture);
|
||||
Assert.Equal(true, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BoolToVisibility_ConvertBack_Collapsed_ReturnsFalse()
|
||||
{
|
||||
var conv = new BoolToVisibilityConverter();
|
||||
var result = conv.ConvertBack(Visibility.Collapsed, typeof(bool), null!, Culture);
|
||||
Assert.Equal(false, result);
|
||||
}
|
||||
|
||||
// ── InverseBoolToVisibilityConverter ──────────────────────
|
||||
|
||||
[Fact]
|
||||
public void InverseBoolToVisibility_True_ReturnsCollapsed()
|
||||
{
|
||||
var conv = new InverseBoolToVisibilityConverter();
|
||||
var result = conv.Convert(true, typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Collapsed, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InverseBoolToVisibility_False_ReturnsVisible()
|
||||
{
|
||||
var conv = new InverseBoolToVisibilityConverter();
|
||||
var result = conv.Convert(false, typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Visible, result);
|
||||
}
|
||||
|
||||
// ── PercentToColorConverter ──────────────────────────────
|
||||
|
||||
[Theory]
|
||||
[InlineData(95f, 255, 69, 58)] // red for > 90
|
||||
[InlineData(91f, 255, 69, 58)] // red at boundary
|
||||
[InlineData(80f, 255, 159, 10)] // orange for > 70
|
||||
[InlineData(71f, 255, 159, 10)] // orange at boundary
|
||||
[InlineData(50f, 48, 209, 88)] // green for <= 70
|
||||
[InlineData(0f, 48, 209, 88)] // green at zero
|
||||
public void PercentToColor_ReturnsCorrectColor(float pct, byte r, byte g, byte b)
|
||||
{
|
||||
var conv = new PercentToColorConverter();
|
||||
var result = conv.Convert(pct, typeof(Brush), null!, Culture) as SolidColorBrush;
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(r, result.Color.R);
|
||||
Assert.Equal(g, result.Color.G);
|
||||
Assert.Equal(b, result.Color.B);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void PercentToColor_ConvertBack_Throws()
|
||||
{
|
||||
var conv = new PercentToColorConverter();
|
||||
Assert.Throws<NotSupportedException>(() =>
|
||||
conv.ConvertBack(null!, typeof(float), null!, Culture));
|
||||
}
|
||||
|
||||
// ── NullToVisibilityConverter ────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void NullToVisibility_Null_ReturnsCollapsed()
|
||||
{
|
||||
var conv = new NullToVisibilityConverter();
|
||||
var result = conv.Convert(null!, typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Collapsed, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NullToVisibility_NotNull_ReturnsVisible()
|
||||
{
|
||||
var conv = new NullToVisibilityConverter();
|
||||
var result = conv.Convert("something", typeof(Visibility), null!, Culture);
|
||||
Assert.Equal(Visibility.Visible, result);
|
||||
}
|
||||
|
||||
// ── FloatFormatConverter ─────────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void FloatFormat_DefaultFormat_OneDecimal()
|
||||
{
|
||||
var conv = new FloatFormatConverter();
|
||||
var result = (string)conv.Convert(42.567f, typeof(string), null!, CultureInfo.InvariantCulture);
|
||||
// Converter uses current culture internally, so parse back to float
|
||||
Assert.True(float.TryParse(result, System.Globalization.NumberStyles.Float, CultureInfo.CurrentCulture, out var parsed));
|
||||
Assert.Equal(42.6f, parsed, 0.05f);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FloatFormat_CustomFormat()
|
||||
{
|
||||
var conv = new FloatFormatConverter();
|
||||
var result = (string)conv.Convert(42.567f, typeof(string), "F2", CultureInfo.InvariantCulture);
|
||||
Assert.True(float.TryParse(result, System.Globalization.NumberStyles.Float, CultureInfo.CurrentCulture, out var parsed));
|
||||
Assert.Equal(42.57f, parsed, 0.005f);
|
||||
}
|
||||
|
||||
// ── BoostButtonTextConverter ─────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void BoostButtonText_True_ReturnsStopText()
|
||||
{
|
||||
var conv = new BoostButtonTextConverter();
|
||||
var result = conv.Convert(true, typeof(string), null!, Culture);
|
||||
Assert.Contains("STOP", result as string ?? "");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BoostButtonText_False_ReturnsBoostText()
|
||||
{
|
||||
var conv = new BoostButtonTextConverter();
|
||||
var result = conv.Convert(false, typeof(string), null!, Culture);
|
||||
Assert.Contains("BOOST", result as string ?? "");
|
||||
}
|
||||
|
||||
// ── BoostButtonColorConverter ────────────────────────────
|
||||
|
||||
[Fact]
|
||||
public void BoostButtonColor_True_ReturnsRed()
|
||||
{
|
||||
var conv = new BoostButtonColorConverter();
|
||||
var result = conv.Convert(true, typeof(Brush), null!, Culture) as SolidColorBrush;
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(255, result.Color.R);
|
||||
Assert.Equal(69, result.Color.G);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BoostButtonColor_False_ReturnsGreen()
|
||||
{
|
||||
var conv = new BoostButtonColorConverter();
|
||||
var result = conv.Convert(false, typeof(Brush), null!, Culture) as SolidColorBrush;
|
||||
|
||||
Assert.NotNull(result);
|
||||
Assert.Equal(48, result.Color.R);
|
||||
Assert.Equal(209, result.Color.G);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user