Skip to content

Commit be9ba95

Browse files
authored
Merge pull request #1524 from bisen2/bugfix-1508
Fix singularization of words ending in `ases`
2 parents 234d3c1 + c31ef79 commit be9ba95

2 files changed

Lines changed: 22 additions & 17 deletions

File tree

src/FSharp.Data.Runtime.Utilities/Pluralizer.fs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ let private tables =
5050

5151
"cis", "ces"
5252
"us", "uses"
53+
"ase", "ases"
5354
"sis", "ses"
5455
"xis", "xes"
5556

tests/FSharp.Data.Core.Tests/NameUtils.fs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@ open NUnit.Framework
99
open FSharp.Data.Runtime.NameUtils
1010

1111
[<Test>]
12-
let ``Formats empty string as PascalCase`` () =
12+
let ``Formats empty string as PascalCase`` () =
1313
nicePascalName "" |> should equal ""
1414

1515
[<Test>]
16-
let ``Formats empty string as camelCase`` () =
16+
let ``Formats empty string as camelCase`` () =
1717
niceCamelName "" |> should equal ""
1818

1919
[<Test>]
20-
let ``Formats one letter string as PascalCase`` () =
20+
let ``Formats one letter string as PascalCase`` () =
2121
nicePascalName "b" |> should equal "B"
2222

2323
[<Test>]
24-
let ``Formats one letter string as camelCase`` () =
24+
let ``Formats one letter string as camelCase`` () =
2525
niceCamelName "a" |> should equal "a"
2626

2727
[<Test>]
28-
let ``Removes non-character symbols`` () =
28+
let ``Removes non-character symbols`` () =
2929
nicePascalName "__hello__" |> should equal "Hello"
3030
niceCamelName "__hello__" |> should equal "hello"
3131

3232
[<Test>]
33-
let ``Makes first letter uppercase`` () =
33+
let ``Makes first letter uppercase`` () =
3434
nicePascalName "abc" |> should equal "Abc"
3535
niceCamelName "abc" |> should equal "abc"
3636

@@ -54,51 +54,51 @@ let ``Handles acronyms`` () =
5454
niceCamelName "abcABCWord" |> should equal "abcAbcWord"
5555

5656
[<Test>]
57-
let ``Detects word after underscore`` () =
57+
let ``Detects word after underscore`` () =
5858
nicePascalName "hello_world" |> should equal "HelloWorld"
5959
niceCamelName "hello_world" |> should equal "helloWorld"
6060

6161
[<Test>]
62-
let ``Works with numbers`` () =
62+
let ``Works with numbers`` () =
6363
nicePascalName "A21_SERVICE" |> should equal "A21Service"
6464
niceCamelName "A21_SERVICE" |> should equal "a21Service"
6565

6666

6767
[<Test>]
68-
let ``Detects word after case change`` () =
68+
let ``Detects word after case change`` () =
6969
nicePascalName "helloWorld" |> should equal "HelloWorld"
7070
niceCamelName "helloWorld" |> should equal "helloWorld"
7171

7272
[<Test>]
73-
let ``No new word after numbers`` () =
73+
let ``No new word after numbers`` () =
7474
nicePascalName "hello123world" |> should equal "Hello123world"
7575
niceCamelName "hello123world" |> should equal "hello123world"
7676

7777
[<Test>]
78-
let ``Removes exclamation mark`` () =
79-
nicePascalName "hello!123" |> should equal "Hello123"
78+
let ``Removes exclamation mark`` () =
79+
nicePascalName "hello!123" |> should equal "Hello123"
8080
niceCamelName "hello!123" |> should equal "hello123"
8181

8282
[<Test>]
83-
let ``Handles long and ugly names`` () =
83+
let ``Handles long and ugly names`` () =
8484
nicePascalName "HelloWorld123_hello__@__omg" |> should equal "HelloWorld123HelloOmg"
8585
niceCamelName "HelloWorld123_hello__@__omg" |> should equal "helloWorld123HelloOmg"
8686

8787
[<Test>]
88-
let ``Unique generator generates unique names`` () =
88+
let ``Unique generator generates unique names`` () =
8989
let gen = uniqueGenerator nicePascalName
9090
let names = [ for _i in 0 .. 100 -> gen "test" ]
9191
Seq.length names |> should equal (Seq.length (set names))
9292

9393
[<Test>]
94-
let ``Unique generator works on single letter names`` () =
94+
let ``Unique generator works on single letter names`` () =
9595
let gen = uniqueGenerator nicePascalName
9696
gen "a" |> should equal "A"
9797
gen "a" |> should equal "A2"
9898
gen "a" |> should equal "A3"
9999

100100
[<Test>]
101-
let ``Trims HTML tags from string`` () =
101+
let ``Trims HTML tags from string`` () =
102102
trimHtml "<b>hello</b><em>world</em>" |> should equal "hello world"
103103

104104
[<Test>]
@@ -124,6 +124,8 @@ let ``Can pluralize names``() =
124124
check "status" "statuses"
125125
check "release" "releases"
126126
check "choice" "choices"
127+
check "purchase" "purchases"
128+
check "purchases" "purchases"
127129

128130
[<Test>]
129131
let ``Can singularize names``() =
@@ -133,7 +135,7 @@ let ``Can singularize names``() =
133135
check "Item" "Item"
134136
check "Items" "Item"
135137
check "Entities" "Entity"
136-
check "geese" "goose"
138+
check "geese" "goose"
137139
check "deer" "deer"
138140
check "sheep" "sheep"
139141
check "wolves" "wolf"
@@ -150,3 +152,5 @@ let ``Can singularize names``() =
150152
check "statuses" "status"
151153
check "releases" "release"
152154
check "choices" "choice"
155+
check "purchase" "purchase"
156+
check "purchases" "purchase"

0 commit comments

Comments
 (0)