-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCursorOverlaySettingsTests.cs
More file actions
69 lines (57 loc) · 2.95 KB
/
Copy pathCursorOverlaySettingsTests.cs
File metadata and controls
69 lines (57 loc) · 2.95 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System.Text.Json.Nodes;
using SwitchifyPc.Core.Settings;
namespace SwitchifyPc.Tests;
public sealed class CursorOverlaySettingsTests : IDisposable
{
private readonly string tempDir = Path.Combine(Path.GetTempPath(), $"switchify-cursor-settings-{Guid.NewGuid():N}");
public void Dispose()
{
if (Directory.Exists(tempDir))
{
Directory.Delete(tempDir, recursive: true);
}
}
[Fact]
public void NormalizesCursorOverlaySettings()
{
Assert.Equal(CursorOverlaySettingsModel.Default, CursorOverlaySettingsModel.Normalize((JsonNode?)null));
Assert.Equal(
CursorOverlaySettingsModel.Default with { Size = "large", Crosshairs = true, Color = "green" },
CursorOverlaySettingsModel.Normalize(JsonNode.Parse("""{"size":"large","crosshairs":true,"color":"green"}""")));
Assert.Equal(
CursorOverlaySettingsModel.Default,
CursorOverlaySettingsModel.Normalize(JsonNode.Parse("""{"enabled":"yes","size":"huge","visibility":"forever","crosshairs":"true","color":"purple"}""")));
}
[Fact]
public void ResolvesSizeAndColorPresets()
{
Assert.Equal(96, CursorOverlaySettingsModel.ResolveSizePixels("small"));
Assert.Equal(128, CursorOverlaySettingsModel.ResolveSizePixels("medium"));
Assert.Equal(176, CursorOverlaySettingsModel.ResolveSizePixels("large"));
Assert.Equal([211, 47, 47], CursorOverlaySettingsModel.ResolveColorRgb("red"));
Assert.Equal([132, 255, 145], CursorOverlaySettingsModel.ResolveColorRgb("green"));
Assert.Equal([100, 166, 255], CursorOverlaySettingsModel.ResolveColorRgb("blue"));
Assert.Equal([255, 209, 102], CursorOverlaySettingsModel.ResolveColorRgb("yellow"));
Assert.Equal([255, 255, 255], CursorOverlaySettingsModel.ResolveColorRgb("white"));
}
[Fact]
public void StoreLoadsDefaultsForMissingOrInvalidJson()
{
List<string> warnings = [];
string filePath = Path.Combine(tempDir, "cursor-overlay-settings.json");
Assert.Equal(CursorOverlaySettingsModel.Default, new JsonCursorOverlaySettingsStore(filePath, warnings.Add).Load());
Directory.CreateDirectory(tempDir);
File.WriteAllText(filePath, "{");
Assert.Equal(CursorOverlaySettingsModel.Default, new JsonCursorOverlaySettingsStore(filePath, warnings.Add).Load());
Assert.Single(warnings);
}
[Fact]
public void StoreSavesNormalizedJsonAndLeavesNoTempFiles()
{
string filePath = Path.Combine(tempDir, "nested", "cursor-overlay-settings.json");
CursorOverlaySettings saved = new JsonCursorOverlaySettingsStore(filePath).Save(CursorOverlaySettingsModel.Default with { Size = "large" });
Assert.Equal("large", saved.Size);
Assert.Contains("\"size\": \"large\"", File.ReadAllText(filePath), StringComparison.Ordinal);
Assert.Empty(Directory.EnumerateFiles(Path.GetDirectoryName(filePath)!, "*.tmp"));
}
}