68 lines
2.6 KiB
C#
68 lines
2.6 KiB
C#
namespace RpgRoller.Tests;
|
|
|
|
public sealed class ServiceHelperExtractionTests
|
|
{
|
|
[Fact]
|
|
public void RoleSerializer_NormalizesParsesAndSerializesRoles()
|
|
{
|
|
var normalized = RoleSerializer.Normalize([" Admin ", "gm", "admin", "", "GM"]);
|
|
var serialized = RoleSerializer.Serialize(normalized);
|
|
var parsed = RoleSerializer.Parse(" admin,GM,admin ");
|
|
|
|
Assert.Equal(["admin", "gm"], normalized);
|
|
Assert.Equal("admin,gm", serialized);
|
|
Assert.Equal(["admin", "gm"], parsed);
|
|
Assert.True(RoleSerializer.HasRole(serialized, "ADMIN"));
|
|
Assert.False(RoleSerializer.HasRole(serialized, "owner"));
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("public", RollVisibility.Public)]
|
|
[InlineData("PRIVATE", RollVisibility.Private)]
|
|
public void RollVisibilityParser_ParsesKnownValues(string input, RollVisibility expected)
|
|
{
|
|
var result = RollVisibilityParser.Parse(input);
|
|
|
|
Assert.True(result.Succeeded);
|
|
Assert.Equal(expected, result.Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void RollVisibilityParser_RejectsUnknownValue()
|
|
{
|
|
var result = RollVisibilityParser.Parse("hidden");
|
|
|
|
Assert.False(result.Succeeded);
|
|
Assert.Equal("invalid_visibility", result.Error!.Code);
|
|
}
|
|
|
|
[Fact]
|
|
public void CustomRollOptionsResolver_ReturnsD6DefaultsOnlyForD6()
|
|
{
|
|
Assert.Equal((1, true, (int?)null), CustomRollOptionsResolver.Resolve(RulesetKind.D6));
|
|
Assert.Equal((0, false, (int?)null), CustomRollOptionsResolver.Resolve(RulesetKind.Dnd5e));
|
|
Assert.Equal((0, false, (int?)null), CustomRollOptionsResolver.Resolve(RulesetKind.Rolemaster));
|
|
}
|
|
|
|
[Fact]
|
|
public void SkillDefinitionValidator_ValidatesRulesetSpecificOptions()
|
|
{
|
|
var d6 = SkillDefinitionValidator.Validate(RulesetKind.D6, "2D+1", 1, true, null);
|
|
var rolemaster = SkillDefinitionValidator.Validate(RulesetKind.Rolemaster, "d100!+15", 0, false, 5);
|
|
var invalidD6 = SkillDefinitionValidator.Validate(RulesetKind.D6, "2D+1", 0, true, null);
|
|
var invalidRolemaster = SkillDefinitionValidator.Validate(RulesetKind.Rolemaster, "d100!+15", 0, false, null);
|
|
|
|
Assert.True(d6.Succeeded);
|
|
Assert.Equal(("2D+1", 1, true, (int?)null), d6.Value);
|
|
|
|
Assert.True(rolemaster.Succeeded);
|
|
Assert.Equal(("d100!+15", 0, false, (int?)5), rolemaster.Value);
|
|
|
|
Assert.False(invalidD6.Succeeded);
|
|
Assert.Equal("invalid_wild_dice", invalidD6.Error!.Code);
|
|
|
|
Assert.False(invalidRolemaster.Succeeded);
|
|
Assert.Equal("invalid_fumble_range", invalidRolemaster.Error!.Code);
|
|
}
|
|
}
|