mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-22 10:56:20 +08:00
Reject undefined numeric LogLevel values (#390)
This commit is contained in:
@@ -110,7 +110,8 @@ public static class SharpEmuLog
|
||||
}
|
||||
|
||||
var normalized = text.Trim();
|
||||
if (Enum.TryParse<LogLevel>(normalized, ignoreCase: true, out level))
|
||||
if (Enum.TryParse<LogLevel>(normalized, ignoreCase: true, out level) &&
|
||||
Enum.IsDefined(level))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -127,6 +128,7 @@ public static class SharpEmuLog
|
||||
return true;
|
||||
}
|
||||
|
||||
level = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
// Copyright (C) 2026 SharpEmu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
using SharpEmu.Logging;
|
||||
using Xunit;
|
||||
|
||||
namespace SharpEmu.Libs.Tests.Logging;
|
||||
|
||||
public sealed class SharpEmuLogTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("Trace", LogLevel.Trace)]
|
||||
[InlineData("debug", LogLevel.Debug)]
|
||||
[InlineData(" Info ", LogLevel.Info)]
|
||||
[InlineData("WARNING", LogLevel.Warning)]
|
||||
[InlineData("Error", LogLevel.Error)]
|
||||
[InlineData("critical", LogLevel.Critical)]
|
||||
[InlineData("None", LogLevel.None)]
|
||||
[InlineData("warn", LogLevel.Warning)]
|
||||
[InlineData("fatal", LogLevel.Critical)]
|
||||
public void TryParseLevelAcceptsDefinedNamesAndAliases(string text, LogLevel expected)
|
||||
{
|
||||
Assert.True(SharpEmuLog.TryParseLevel(text, out var actual));
|
||||
Assert.Equal(expected, actual);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(null)]
|
||||
[InlineData("")]
|
||||
[InlineData(" ")]
|
||||
[InlineData("unknown")]
|
||||
[InlineData("999")]
|
||||
[InlineData("-1")]
|
||||
public void TryParseLevelRejectsInvalidValues(string? text)
|
||||
{
|
||||
Assert.False(SharpEmuLog.TryParseLevel(text, out var level));
|
||||
Assert.Equal(default, level);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user