Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added TODO.md
Empty file.
26 changes: 19 additions & 7 deletions stmx.tests/Commands/BatteryCommandTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@ public async Task TestBatteryCommand_PrintsIconsAndPercent()
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: true, showStatusIcon: true, showPercent: true);
await cmd.ExecuteAsync(
showIcon: true,
showStatusIcon: true,
showPercentIcon: true,
percentIconValue: "%"
);

Assert.That(consoleOut.ToString(), Is.EqualTo("CAP_ICONSTATUS_ICON 80%"));
}
Expand All @@ -44,7 +49,12 @@ public async Task TestBatteryCommand_NoBatteryData_PrintsEmptyFields()
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: false, showStatusIcon: false, showPercent: false);
await cmd.ExecuteAsync(
showIcon: false,
showStatusIcon: false,
showPercentIcon: false,
percentIconValue: ""
);

Assert.That(consoleOut.ToString(), Is.EqualTo(""));
}
Expand Down Expand Up @@ -73,12 +83,14 @@ public async Task TestBatteryCommand_RespectsDefaultOptions()
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

// Use defaults
await cmd.ExecuteAsync(showIcon: opts.DefaultShowBatteryIcon,
showStatusIcon: opts.DefaultShowBatteryChargingIcon,
showPercent: opts.DefaultShowBatteryPercent);
await cmd.ExecuteAsync(
showIcon: false,
showStatusIcon: false,
showPercentIcon: false,
percentIconValue: "%"
);

Assert.That(consoleOut.ToString(), Is.EqualTo("ICON50 50%"));
Assert.That(consoleOut.ToString(), Is.EqualTo("50"));
}
}

112 changes: 62 additions & 50 deletions stmx.tests/Commands/CpuCommandTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,27 +7,24 @@ namespace stmx.Tests;
public class CpuCommandTests
{
[Test]
public async Task TestCpuCommand_PrintsIconAndPercent()
public async Task TestCpuCommand_PrintsCustomIconAndPercent()
{
var mockStats = new Mock<ISystemStatsService>();
var mockIcons = new Mock<IIconService>();

mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(37.42);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions
{
DefaultShowMemoryIcon = true
});
mockIcons.SetupGet(i => i.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU_ICON"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: true);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "CPU_ICON",
showPercentIcon: true,
percentIconValue: "%"
);

Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON 37.42%"));
}
Expand All @@ -42,117 +39,132 @@ public async Task TestCpuCommand_PrintsPercentWithoutIcon()
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions());
mockIcons.SetupGet(i => i.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU_ICON"
CpuIcon = "CPU_ICON",
PercentIcon = "%"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: false);
await cmd.ExecuteAsync(
showIcon: false,
iconValue: "",
showPercentIcon: true,
percentIconValue: ""
);

Assert.That(consoleOut.ToString(), Is.EqualTo("12.35%"));
}

[Test]
public async Task TestCpuCommand_RespectsDefaultOptions()
public async Task TestCpuCommand_PrintsPercentWithoutPercentIcon()
{
var opts = new SystemStatsServiceOptions
{
DefaultShowMemoryIcon = true
};

var mockStats = new Mock<ISystemStatsService>();
mockStats.SetupGet(s => s.Options).Returns(opts);
mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(50.0);

var mockIcons = new Mock<IIconService>();
mockIcons.SetupGet(s => s.Options).Returns(new IconServiceOptions

mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(12.345);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions());
mockIcons.SetupGet(i => i.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU_ICON"
CpuIcon = "CPU_ICON",
PercentIcon = "%"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: opts.DefaultShowMemoryIcon);
await cmd.ExecuteAsync(
showIcon: false,
iconValue: "",
showPercentIcon: false,
percentIconValue: ""
);

Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON 50.00%"));
Assert.That(consoleOut.ToString(), Is.EqualTo("12.35"));
}

[Test]
public async Task TestCpuCommand_HandlesNullCpuPercent()
public async Task TestCpuCommand_RespectsDefaultOptions()
{
var mockStats = new Mock<ISystemStatsService>();
var mockIcons = new Mock<IIconService>();

mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync((double?)null);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions());
mockIcons.SetupGet(s => s.Options).Returns(new IconServiceOptions
mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(37.42);
mockIcons.SetupGet(i => i.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU_ICON"
CpuIcon = "CPU_ICON",
PercentIcon = "%"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: true);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "",
showPercentIcon: true,
percentIconValue: ""
);

Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON %"));
Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON 37.42%"));
}

[Test]
public async Task TestCpuCommand_FormatsToTwoDecimalPlaces()
public async Task TestCpuCommand_HandlesNullCpuPercent()
{
var mockStats = new Mock<ISystemStatsService>();
var mockIcons = new Mock<IIconService>();

mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(33.3333);
mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync((double?)null);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions());
mockIcons.SetupGet(s => s.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: false);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "CPU_ICON",
showPercentIcon: true,
percentIconValue: "%"
);

Assert.That(consoleOut.ToString(), Is.EqualTo("33.33%"));

Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON %"));
}

[Test]
public async Task TestCpuCommand_OptionParsingCallsExecute()
public async Task TestCpuCommand_FormatsToTwoDecimalPlaces()
{
var mockStats = new Mock<ISystemStatsService>();
var mockIcons = new Mock<IIconService>();

mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(10.0);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions
{
DefaultShowMemoryIcon = false
});
mockStats.Setup(s => s.GetCpuUsagePercent()).ReturnsAsync(33.3333);
mockStats.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions());
mockIcons.SetupGet(s => s.Options).Returns(new IconServiceOptions
{
CpuIcon = "CPU_ICON"
CpuIcon = "CPU"
});

var cmd = new CpuCommand(mockStats.Object, mockIcons.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

// mimic command execution with icon enabled
await cmd.ExecuteAsync(showIcon: true);
await cmd.ExecuteAsync(
showIcon: false,
iconValue: "",
showPercentIcon: true,
percentIconValue: "%"
);

Assert.That(consoleOut.ToString(), Is.EqualTo("CPU_ICON 10.00%"));
Assert.That(consoleOut.ToString(), Is.EqualTo("33.33%"));
}
}
70 changes: 42 additions & 28 deletions stmx.tests/Commands/MemoryCommandTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,23 @@ public async Task TestMemoryCommand_PrintsIconAndPercent()
var mockStatsService = new Mock<ISystemStatsService>();
var mockIconService = new Mock<IIconService>();

mockStatsService.Setup(s => s.GetMemoryUsagePercent(MemoryUnits.MibiBytes)).ReturnsAsync(75.0);
mockStatsService.Setup(s => s.GetMemoryUsagePercent()).ReturnsAsync(75.0);
mockStatsService.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions
{
DefaultMemoryUnit = MemoryUnits.MibiBytes
});
mockIconService.SetupGet(s => s.Options).Returns(new IconServiceOptions
{
MemoryIcon = "MEM_ICON"
});

var cmd = new MemoryCommand(mockStatsService.Object, mockIconService.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: true, showPercent: true, unit: MemoryUnits.MibiBytes);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "MEM_ICON",
showPercentIcon: true,
percentIconValue: "%",
unit: MemoryUnits.Percent);

Assert.That(consoleOut.ToString(), Is.EqualTo("MEM_ICON 75.00%"));
}
Expand All @@ -56,44 +57,46 @@ public async Task TestMemoryCommand_PrintsNumberWithoutIcon()
var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

await cmd.ExecuteAsync(showIcon: false, showPercent: false, unit: MemoryUnits.GibiBytes);
await cmd.ExecuteAsync(
showIcon: false,
iconValue: "",
showPercentIcon: true,
percentIconValue: "",
unit: MemoryUnits.GibiBytes);

Assert.That(consoleOut.ToString(), Is.EqualTo("2 / 8"));
}

[Test]
public async Task TestMemoryCommand_RespectsDefaultOptions()
{
var opts = new SystemStatsServiceOptions
{
DefaultShowMemoryIcon = true,
DefaultShowBatteryPercent = true,
DefaultMemoryUnit = MemoryUnits.MibiBytes
};

var mockStatsService = new Mock<ISystemStatsService>();
mockStatsService.SetupGet(s => s.Options).Returns(opts);
var mockIconService = new Mock<IIconService>();

mockStatsService.Setup(s => s.GetMemoryUsagePercent()).ReturnsAsync(75.0);
mockStatsService.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions
{
DefaultMemoryUnit = MemoryUnits.MibiBytes
});
mockIconService.SetupGet(s => s.Options).Returns(new IconServiceOptions
{
MemoryIcon = "MEM_ICON"
MemoryIcon = "MEM_ICON",
PercentIcon = "%"
});

mockStatsService.Setup(s => s.GetMemoryUsagePercent(MemoryUnits.MibiBytes)).ReturnsAsync(60.0);

var cmd = new MemoryCommand(mockStatsService.Object, mockIconService.Object);

var consoleOut = new StringWriter();
Console.SetOut(consoleOut);

// Using defaults
await cmd.ExecuteAsync(
showIcon: opts.DefaultShowMemoryIcon,
showPercent: opts.DefaultShowBatteryPercent,
unit: opts.DefaultMemoryUnit
);
showIcon: true,
iconValue: "",
showPercentIcon: true,
percentIconValue: "",
unit: MemoryUnits.Percent);

Assert.That(consoleOut.ToString(), Is.EqualTo("MEM_ICON 60.00%"));
Assert.That(consoleOut.ToString(), Is.EqualTo("MEM_ICON 75.00%"));
}

[Test]
Expand All @@ -102,7 +105,7 @@ public async Task TestMemoryCommand_HandlesNullValues()
var mockStatsService = new Mock<ISystemStatsService>();
var mockIconService = new Mock<IIconService>();

mockStatsService.Setup(s => s.GetMemoryUsagePercent(MemoryUnits.MibiBytes)).ReturnsAsync((double?)null);
mockStatsService.Setup(s => s.GetMemoryUsagePercent()).ReturnsAsync((double?)null);
mockStatsService.Setup(s => s.GetMemoryUsageNumber(MemoryUnits.MibiBytes)).ReturnsAsync((string?)null);

mockStatsService.SetupGet(s => s.Options).Returns(new SystemStatsServiceOptions
Expand All @@ -111,7 +114,8 @@ public async Task TestMemoryCommand_HandlesNullValues()
});
mockIconService.SetupGet(s => s.Options).Returns(new IconServiceOptions
{
MemoryIcon = "MEM_ICON"
MemoryIcon = "MEM_ICON",
PercentIcon = "%"
});

var cmd = new MemoryCommand(mockStatsService.Object, mockIconService.Object);
Expand All @@ -120,13 +124,23 @@ public async Task TestMemoryCommand_HandlesNullValues()
Console.SetOut(consoleOut);

// Percent null
await cmd.ExecuteAsync(showIcon: true, showPercent: true, unit: MemoryUnits.MibiBytes);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "MEM_ICON",
showPercentIcon: true,
percentIconValue: "%",
unit: MemoryUnits.Percent);
Assert.That(consoleOut.ToString(), Is.EqualTo("MEM_ICON %"));

consoleOut.GetStringBuilder().Clear();

// Number null
await cmd.ExecuteAsync(showIcon: true, showPercent: false, unit: MemoryUnits.MibiBytes);
await cmd.ExecuteAsync(
showIcon: true,
iconValue: "MEM_ICON",
showPercentIcon: false,
percentIconValue: "",
unit: MemoryUnits.MibiBytes);
Assert.That(consoleOut.ToString(), Is.EqualTo("MEM_ICON "));
}
}
Expand Down
Loading