Skip to content

Commit 2595872

Browse files
committed
Merge branch 'master' of https://github.com/wallymathieu/FSharpx.Extras into v2
2 parents 8a3dfe5 + c25e8de commit 2595872

4 files changed

Lines changed: 43 additions & 0 deletions

File tree

src/FSharpx.Extras/Enum.fs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
namespace FSharpx
2+
open System.Linq
3+
4+
module Enum=
5+
let tryParse s :'a option when 'a:enum<'b> =
6+
match System.Enum.TryParse (s) with
7+
| true, v -> Some v
8+
| _ -> None
9+
10+
let parse s : 'a =
11+
System.Enum.Parse(typeof<'a>, s) :?> 'a
12+
13+
let getValues<'t> ()=
14+
let values = System.Enum.GetValues (typeof<'t>)
15+
Enumerable.Cast<'t> values //Array.unbox

src/FSharpx.Extras/FSharpx.Extras.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<Content Include="app.config" />
7878
<Compile Include="Net.fs" />
7979
<Compile Include="Conneg.fs" />
80+
<Compile Include="Enum.fs" />
8081
</ItemGroup>
8182
<ItemGroup>
8283
<Reference Include="mscorlib" />

tests/FSharpx.Tests/EnumTest.fs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
module FSharpx.Http.Tests.EnumTests
2+
open NUnit.Framework
3+
open FSharpx
4+
5+
type LanguageOptions=
6+
| FSharp = 0
7+
| CSharp = 1
8+
| VB = 2
9+
10+
[<Test>]
11+
let ``tryParse can parse value and return Some value`` ()=
12+
Assert.AreEqual(Some LanguageOptions.CSharp, (Enum.tryParse("CSharp") : LanguageOptions option))
13+
14+
[<Test>]
15+
let ``tryParse returns None if it fails to parse`` ()=
16+
Assert.AreEqual(None, (Enum.tryParse("English") : LanguageOptions option))
17+
18+
[<Test>]
19+
let ``parse returns parsed value`` ()=
20+
Assert.AreEqual(LanguageOptions.CSharp ,(Enum.parse("CSharp") : LanguageOptions))
21+
22+
let ``parse throws an exception when it fails to parse`` ()=
23+
let parseEnglish ()=
24+
let x = Enum.parse("English") : LanguageOptions
25+
()
26+
Assert.Throws<System.Exception>( TestDelegate( parseEnglish ) )

tests/FSharpx.Tests/FSharpx.Tests.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
<Compile Include="ControlTests.fs" />
9090
<Compile Include="AsyncStreamReaderTest.fs" />
9191
<Compile Include="ConnegTests.fs" />
92+
<Compile Include="EnumTest.fs" />
9293
</ItemGroup>
9394
<ItemGroup>
9495
<Reference Include="mscorlib" />

0 commit comments

Comments
 (0)