diff --git a/CHANGELOG.md b/CHANGELOG.md index 3049b62..b55122b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,13 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [0.5.0] - 2024-10-25 +### Fixed + +- Bug with code case converter regex -## [0.4.3] - 2024-10-25 +## [0.5.0] - 2024-10-25 -## [0.4.2] - 2024-10-25 +### Added -## [0.4.1] - 2024-10-25 +- Code case converters (Pascal, Camel, Snake, Kebab, Train) ## [0.4.0] - 2024-10-25 @@ -27,10 +29,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Codecov reporting -## [0.2.2] - 2024-10-20 - -## [0.2.1] - 2024-10-16 - ## [0.2.0] - 2024-10-10 ### Added diff --git a/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs b/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs index a56d6d4..f246ba2 100644 --- a/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs +++ b/TJC.StringExtensions.Tests/Cases/KebabCaseExtensionsTests.cs @@ -18,4 +18,74 @@ public void ToKebabCaseTest() // Assert Assert.AreEqual(expected, result); } + + [TestMethod] + public void FromPascalCase_ToKebabCase() + { + // Arrange + var input = "KebabCaseExtensions"; + var expected = "kebab-case-extensions"; + + // Act + var result = input.ToKebabCase(); + + // Assert + Assert.AreEqual(expected, result); + } + + [TestMethod] + public void FromCamelCase_ToKebabCase() + { + // Arrange + var input = "kebabCaseExtensions"; + var expected = "kebab-case-extensions"; + + // Act + var result = input.ToKebabCase(); + + // Assert + Assert.AreEqual(expected, result); + } + + [TestMethod] + public void FromTrainCase_ToKebabCase() + { + // Arrange + var input = "Kebab-Case-Extensions"; + var expected = "kebab-case-extensions"; + + // Act + var result = input.ToKebabCase(); + + // Assert + Assert.AreEqual(expected, result); + } + + [TestMethod] + public void FromSnakeCase_ToKebabCase() + { + // Arrange + var input = "kebab_case_extensions"; + var expected = "kebab-case-extensions"; + + // Act + var result = input.ToKebabCase(); + + // Assert + Assert.AreEqual(expected, result); + } + + [TestMethod] + public void FromKebabCase_ToKebabCase() + { + // Arrange + var input = "kebab-case-extensions"; + var expected = "kebab-case-extensions"; + + // Act + var result = input.ToKebabCase(); + + // Assert + Assert.AreEqual(expected, result); + } } \ No newline at end of file diff --git a/TJC.StringExtensions/Cases/CodeCaseExtensions.cs b/TJC.StringExtensions/Cases/CodeCaseExtensions.cs index 92d4590..87746bd 100644 --- a/TJC.StringExtensions/Cases/CodeCaseExtensions.cs +++ b/TJC.StringExtensions/Cases/CodeCaseExtensions.cs @@ -36,6 +36,6 @@ public static string[] CodeCaseToWords(this string input) private static readonly Regex CaseWordSplitter = CaseWordSplitterRegex(); - [GeneratedRegex(@"[a-z][A-Z]|[_\- ]", RegexOptions.Compiled)] + [GeneratedRegex(@"(?True \ - + + + True + \ + + diff --git a/Testing.sln b/Testing.sln index deeb3ac..169483d 100644 --- a/Testing.sln +++ b/Testing.sln @@ -3,9 +3,14 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.8.34316.72 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TJC.StringExtensions", "TJC.StringExtensions\TJC.StringExtensions.csproj", "{1D6CD7D0-42B8-403D-948F-CCC7452257D3}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TJC.StringExtensions", "TJC.StringExtensions\TJC.StringExtensions.csproj", "{1D6CD7D0-42B8-403D-948F-CCC7452257D3}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TJC.StringExtensions.Tests", "TJC.StringExtensions.Tests\TJC.StringExtensions.Tests.csproj", "{AE10271D-F595-48FB-8398-5CE3D1F9FB8C}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TJC.StringExtensions.Tests", "TJC.StringExtensions.Tests\TJC.StringExtensions.Tests.csproj", "{AE10271D-F595-48FB-8398-5CE3D1F9FB8C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{6120C59B-01DA-4A50-B125-F98787B726A7}" + ProjectSection(SolutionItems) = preProject + THIRD-PARTY-LICENSES = THIRD-PARTY-LICENSES + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution