Skip to content

Commit eae926f

Browse files
authored
✨ feature: Create Pluralize Extension for Enumerable (#56)
* Add Pluralize Extension for Enumerable * Add Unit Test
1 parent ccb0163 commit eae926f

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

TJC.StringExtensions.Tests/Pluralize/PluralizeExtensionsTests.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace TJC.StringExtensions.Tests.Pluralize;
66
public class PluralizeExtensionsTests
77
{
88
[TestMethod]
9-
public void Pluralize_ObjectCollection_CountZero_ReturnsNonPluralized()
9+
public void Pluralize_ObjectCollection_CountZero_ReturnsPluralized()
1010
{
1111
// Arrange
1212
var objects = new List<object>();
@@ -31,6 +31,19 @@ public void Pluralize_ObjectCollection_CountOne_ReturnsNonPluralized()
3131
Assert.AreEqual("item", result);
3232
}
3333

34+
[TestMethod]
35+
public void Pluralize_ObjectCollection_CountTwo_ReturnsPluralized()
36+
{
37+
// Arrange
38+
var objects = new List<object>();
39+
40+
// Act
41+
var result = "item".Pluralize(objects);
42+
43+
// Assert
44+
Assert.AreEqual("items", result);
45+
}
46+
3447
[DataRow(0, "items")]
3548
[DataRow(1, "item")]
3649
[DataRow(2, "items")]

TJC.StringExtensions/Pluralize/PluralizeExtensions.cs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
public static class PluralizeExtensions
77
{
88
/// <summary>
9-
/// Pluralized a string based upon the number of objects within a collection
9+
/// Pluralize a string based upon the number of objects within a collection.
1010
/// </summary>
1111
/// <param name="objects">Collection to check if we require a pluralized output or not</param>
1212
/// <param name="nonPluralized">Non-Pluralized form of the string</param>
@@ -18,7 +18,19 @@ public static string Pluralize(this IEnumerable<object> objects,
1818
nonPluralized.Pluralize(objects.Count(), pluralized);
1919

2020
/// <summary>
21-
/// Pluralized a string based upon the value of number
21+
/// Pluralize a string based upon the number of objects within a collection.
22+
/// </summary>
23+
/// <param name="objects">Collection to check if we require a pluralized output or not</param>
24+
/// <param name="nonPluralized">Non-Pluralized form of the string</param>
25+
/// <param name="pluralized">(Optional) Pluralized form of the string. If omitted, will return the Non-Pluralized form of the string with an 's' on the end</param>
26+
/// <returns></returns>
27+
public static string Pluralize(this string nonPluralized,
28+
IEnumerable<object> objects,
29+
string? pluralized = null) =>
30+
nonPluralized.Pluralize(objects.Count(), pluralized);
31+
32+
/// <summary>
33+
/// Pluralize a string based upon the value of number.
2234
/// </summary>
2335
/// <param name="nonPluralized">Non-Pluralized form of the string</param>
2436
/// <param name="number">Number (Pluralize unless equal to 1)</param>
@@ -30,7 +42,7 @@ public static string Pluralize(this string nonPluralized,
3042
nonPluralized.Pluralize(!number.IsOne(), pluralized);
3143

3244
/// <summary>
33-
/// Pluralized a string based upon the value of number
45+
/// Pluralize a string based upon the value of number.
3446
/// </summary>
3547
/// <param name="nonPluralized">Non-Pluralized form of the string</param>
3648
/// <param name="number">Number (Pluralize unless equal to 1)</param>
@@ -42,7 +54,7 @@ public static string Pluralize(this string nonPluralized,
4254
nonPluralized.Pluralize(!number.IsOne(), pluralized);
4355

4456
/// <summary>
45-
/// Pluralized a string based upon a boolean
57+
/// Pluralize a string based upon a boolean.
4658
/// </summary>
4759
/// <param name="nonPluralized">Non-Pluralized form of the string</param>
4860
/// <param name="pluralize">Should we pluralize or not</param>

0 commit comments

Comments
 (0)