From 9fa57ac57d56f64bb7cf4149c50fb794f89519b4 Mon Sep 17 00:00:00 2001 From: bryanedds Date: Sun, 5 Apr 2015 10:53:58 -0400 Subject: [PATCH] Moved Xtension to Prime. Former-commit-id: 8ccd875dbccbf8312df8280260fabd074f478294 --- Nu/Nu/Nu/Nu.fsproj | 3 +- .../{XtensionTests.fs => ReflectionTests.fs} | 31 +----------- Prime/Prime/Prime/Prime.fsproj | 2 + {Nu/Nu/Nu => Prime/Prime/Prime}/Xtension.fs | 8 ++- Prime/Prime/Prime/XtensionTests.fs | 49 +++++++++++++++++++ 5 files changed, 56 insertions(+), 37 deletions(-) rename Nu/Nu/Nu/{XtensionTests.fs => ReflectionTests.fs} (65%) rename {Nu/Nu/Nu => Prime/Prime/Prime}/Xtension.fs (97%) create mode 100644 Prime/Prime/Prime/XtensionTests.fs diff --git a/Nu/Nu/Nu/Nu.fsproj b/Nu/Nu/Nu/Nu.fsproj index 420a898038..2195af4bf9 100644 --- a/Nu/Nu/Nu/Nu.fsproj +++ b/Nu/Nu/Nu/Nu.fsproj @@ -66,7 +66,6 @@ - @@ -97,7 +96,7 @@ - + diff --git a/Nu/Nu/Nu/XtensionTests.fs b/Nu/Nu/Nu/ReflectionTests.fs similarity index 65% rename from Nu/Nu/Nu/XtensionTests.fs rename to Nu/Nu/Nu/ReflectionTests.fs index fb35552d10..d3e0f684bf 100644 --- a/Nu/Nu/Nu/XtensionTests.fs +++ b/Nu/Nu/Nu/ReflectionTests.fs @@ -9,7 +9,7 @@ open Xunit open Prime open Nu open Nu.Constants -module XtensionTests = +module ReflectionTests = type [] TestXtended = { Xtension : Xtension } @@ -38,35 +38,6 @@ module XtensionTests = let xmlDocument = let emptyDoc = XmlDocument () in (emptyDoc.Load xmlReader; emptyDoc) read (xmlDocument.SelectSingleNode RootNodeName) target - let [] canAddField () = - let xtn = Xtension.empty - let xtn = xtn?TestField <- 5 - let fieldValue = xtn?TestField - Assert.Equal (5, fieldValue) - -#if DEBUG - let [] cantAddFieldWhenSealed () = - let xtn = Xtension.safe - Assert.Throws (fun () -> ignore <| xtn?TestField <- 0) -#endif - - let [] cantAccessNonexistentField () = - let xtn = Xtension.mixed - let xtn = xtn?TestField <- 5 - Assert.Throws (fun () -> ignore <| xtn?TetField) - - let [] missingFieldReturnsDefault () = - let xtn = Xtension.empty - let xtn = xtn?TestField <- 0 - let fieldValue = xtn?MissingField - Assert.Equal (0, fieldValue) - - let [] canAddFieldViaContainingType () = - let xtd = { Xtension = Xtension.empty } - let xtd = xtd?TestField <- 5 - let fieldValue = xtd?TestField - Assert.Equal (5, fieldValue) - let [] xtensionSerializationViaContainingTypeWorks () = let xtd = { Xtension = Xtension.mixed } let xtd = xtd?TestField <- 5 diff --git a/Prime/Prime/Prime/Prime.fsproj b/Prime/Prime/Prime/Prime.fsproj index 3f1d37984c..f2a3a20dc2 100644 --- a/Prime/Prime/Prime/Prime.fsproj +++ b/Prime/Prime/Prime/Prime.fsproj @@ -86,12 +86,14 @@ + + diff --git a/Nu/Nu/Nu/Xtension.fs b/Prime/Prime/Prime/Xtension.fs similarity index 97% rename from Nu/Nu/Nu/Xtension.fs rename to Prime/Prime/Prime/Xtension.fs index f47008b601..d0b68d0e92 100644 --- a/Nu/Nu/Nu/Xtension.fs +++ b/Prime/Prime/Prime/Xtension.fs @@ -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 [] module XtensionModule = diff --git a/Prime/Prime/Prime/XtensionTests.fs b/Prime/Prime/Prime/XtensionTests.fs new file mode 100644 index 0000000000..aa4e411698 --- /dev/null +++ b/Prime/Prime/Prime/XtensionTests.fs @@ -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 [] 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 [] canAddField () = + let xtn = Xtension.empty + let xtn = xtn?TestField <- 5 + let fieldValue = xtn?TestField + Assert.Equal (5, fieldValue) + +#if DEBUG + let [] cantAddFieldWhenSealed () = + let xtn = Xtension.safe + Assert.Throws (fun () -> ignore <| xtn?TestField <- 0) +#endif + + let [] cantAccessNonexistentField () = + let xtn = Xtension.mixed + let xtn = xtn?TestField <- 5 + Assert.Throws (fun () -> ignore <| xtn?TetField) + + let [] missingFieldReturnsDefault () = + let xtn = Xtension.empty + let xtn = xtn?TestField <- 0 + let fieldValue = xtn?MissingField + Assert.Equal (0, fieldValue) + + let [] canAddFieldViaContainingType () = + let xtd = { Xtension = Xtension.empty } + let xtd = xtd?TestField <- 5 + let fieldValue = xtd?TestField + Assert.Equal (5, fieldValue) \ No newline at end of file