File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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
Original file line number Diff line number Diff line change 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" />
Original file line number Diff line number Diff line change 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 ) )
Original file line number Diff line number Diff line change 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" />
You can’t perform that action at this time.
0 commit comments