using OrbisForge.Core; using Xunit; namespace OrbisForge.Core.Tests; public class ProjectOptionsTests { [Theory] [InlineData("my_project", "my_project")] [InlineData("my project", "my_project")] [InlineData(" spaced ", "spaced")] [InlineData("a/b\\c", "a_b_c")] [InlineData("kebab-case_2", "kebab-case_2")] [InlineData("", "orbis_project")] [InlineData(" ", "orbis_project")] [InlineData("!!!", "___")] public void SanitizedName_ReplacesNonAlphanumericSeparators(string input, string expected) { var options = new ProjectOptions { Name = input }; Assert.Equal(expected, options.SanitizedName); } [Fact] public void SanitizedName_PreservesUnicodeLetters() { // char.IsLetterOrDigit is Unicode-aware, so accented letters pass through as-is // rather than getting collapsed to underscores -- documenting that, not just assuming it. var options = new ProjectOptions { Name = "héllo" }; Assert.Equal("héllo", options.SanitizedName); } [Theory] [InlineData(null, false)] [InlineData("", false)] [InlineData(" ", false)] [InlineData("192.168.1.50", true)] public void IncludeDeploy_TracksWhetherHostIsSet(string? host, bool expected) { var options = new ProjectOptions { Name = "x", DeployHost = host }; Assert.Equal(expected, options.IncludeDeploy); } }