Skip to content

Commit

Permalink
Moved Xtension to Prime.
Browse files Browse the repository at this point in the history
Former-commit-id: 8ccd875
  • Loading branch information
bryanedds committed Apr 5, 2015
1 parent 82676e4 commit 9fa57ac
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 37 deletions.
3 changes: 1 addition & 2 deletions Nu/Nu/Nu/Nu.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,6 @@
<Compile Include="Constants.fs" />
<Compile Include="Address.fs" />
<Compile Include="Math.fs" />
<Compile Include="Xtension.fs" />
<Compile Include="Overlayer.fs" />
<Compile Include="OverlayRouter.fs" />
<Compile Include="Reflection.fs" />
Expand Down Expand Up @@ -97,7 +96,7 @@
<Compile Include="Observation.fs" />
<Compile Include="Chain.fs" />
<Compile Include="AddressTests.fs" />
<Compile Include="XtensionTests.fs" />
<Compile Include="ReflectionTests.fs" />
<Compile Include="WorldTests.fs" />
<Compile Include="ObservationTests.fs" />
<Compile Include="ChainTests.fs" />
Expand Down
31 changes: 1 addition & 30 deletions Nu/Nu/Nu/XtensionTests.fs → Nu/Nu/Nu/ReflectionTests.fs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ open Xunit
open Prime
open Nu
open Nu.Constants
module XtensionTests =
module ReflectionTests =

type [<CLIMutable; NoComparison>] TestXtended =
{ Xtension : Xtension }
Expand Down Expand Up @@ -38,35 +38,6 @@ module XtensionTests =
let xmlDocument = let emptyDoc = XmlDocument () in (emptyDoc.Load xmlReader; emptyDoc)
read (xmlDocument.SelectSingleNode RootNodeName) target

let [<Fact>] canAddField () =
let xtn = Xtension.empty
let xtn = xtn?TestField <- 5
let fieldValue = xtn?TestField
Assert.Equal (5, fieldValue)

#if DEBUG
let [<Fact>] cantAddFieldWhenSealed () =
let xtn = Xtension.safe
Assert.Throws<Exception> (fun () -> ignore <| xtn?TestField <- 0)
#endif

let [<Fact>] cantAccessNonexistentField () =
let xtn = Xtension.mixed
let xtn = xtn?TestField <- 5
Assert.Throws<Exception> (fun () -> ignore <| xtn?TetField)

let [<Fact>] missingFieldReturnsDefault () =
let xtn = Xtension.empty
let xtn = xtn?TestField <- 0
let fieldValue = xtn?MissingField
Assert.Equal (0, fieldValue)

let [<Fact>] canAddFieldViaContainingType () =
let xtd = { Xtension = Xtension.empty }
let xtd = xtd?TestField <- 5
let fieldValue = xtd?TestField
Assert.Equal (5, fieldValue)

let [<Fact>] xtensionSerializationViaContainingTypeWorks () =
let xtd = { Xtension = Xtension.mixed }
let xtd = xtd?TestField <- 5
Expand Down
2 changes: 2 additions & 0 deletions Prime/Prime/Prime/Prime.fsproj
Original file line number Diff line number Diff line change
Expand Up @@ -86,12 +86,14 @@
<Compile Include="AlgebraicConverter.fs" />
<Compile Include="AlgebraicDescriptor.fs" />
<Compile Include="AlgebraicString.fs" />
<Compile Include="Xtension.fs" />
<Compile Include="Implicit.fs" />
<Compile Include="DuckTyping.fs" />
<Compile Include="ImmutableSubclass.fs" />
<Compile Include="RandTests.fs" />
<Compile Include="AlgebraicReaderTests.fs" />
<Compile Include="AlgebraicConverterTests.fs" />
<Compile Include="XtensionTests.fs" />
<Compile Include="Program.fs" />
<None Include="Interactive.fsx" />
<None Include="App.config" />
Expand Down
8 changes: 3 additions & 5 deletions Nu/Nu/Nu/Xtension.fs → Prime/Prime/Prime/Xtension.fs
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
// Nu Game Engine.
// Copyright (C) Bryan Edds, 2013-2015.
// Prime - A PRIMitivEs code library.
// Copyright (C) Bryan Edds, 2012-2015.

namespace Nu
namespace Prime
open System
open System.Reflection
open System.ComponentModel
open Prime
open Nu
open Nu.Constants

[<AutoOpen>]
module XtensionModule =
Expand Down
49 changes: 49 additions & 0 deletions Prime/Prime/Prime/XtensionTests.fs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
// Prime - A PRIMitivEs code library.
// Copyright (C) Bryan Edds, 2012-2015.

namespace Prime
open System
open System.IO
open System.Xml
open Xunit
open Prime
module XtensionTests =

type [<CLIMutable; NoComparison>] TestXtended =
{ Xtension : Xtension }

static member (?) (this : TestXtended, memberName) =
Xtension.(?) (this.Xtension, memberName)

static member (?<-) (this : TestXtended, memberName, value) =
let xtension = Xtension.(?<-) (this.Xtension, memberName, value)
{ this with Xtension = xtension }

let [<Fact>] canAddField () =
let xtn = Xtension.empty
let xtn = xtn?TestField <- 5
let fieldValue = xtn?TestField
Assert.Equal (5, fieldValue)

#if DEBUG
let [<Fact>] cantAddFieldWhenSealed () =
let xtn = Xtension.safe
Assert.Throws<Exception> (fun () -> ignore <| xtn?TestField <- 0)
#endif

let [<Fact>] cantAccessNonexistentField () =
let xtn = Xtension.mixed
let xtn = xtn?TestField <- 5
Assert.Throws<Exception> (fun () -> ignore <| xtn?TetField)

let [<Fact>] missingFieldReturnsDefault () =
let xtn = Xtension.empty
let xtn = xtn?TestField <- 0
let fieldValue = xtn?MissingField
Assert.Equal (0, fieldValue)

let [<Fact>] canAddFieldViaContainingType () =
let xtd = { Xtension = Xtension.empty }
let xtd = xtd?TestField <- 5
let fieldValue = xtd?TestField
Assert.Equal (5, fieldValue)

0 comments on commit 9fa57ac

Please sign in to comment.