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 8686 <Content Include =" app.config" />
8787 <Compile Include =" Net.fs" />
8888 <Compile Include =" Conneg.fs" />
89+ <Compile Include =" Enum.fs" />
8990 </ItemGroup >
9091 <ItemGroup >
9192 <Reference Include =" FSharp.Control.AsyncSeq" >
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 9595 <Compile Include =" ControlTests.fs" />
9696 <Compile Include =" AsyncStreamReaderTest.fs" />
9797 <Compile Include =" ConnegTests.fs" />
98+ <Compile Include =" EnumTest.fs" />
9899 </ItemGroup >
99100 <ItemGroup >
100101 <Reference Include =" FsCheck" >
You can’t perform that action at this time.
0 commit comments