diff --git a/canopy.sln b/canopy.sln
index 4b6c0b0a..f75b887c 100644
--- a/canopy.sln
+++ b/canopy.sln
@@ -14,8 +14,6 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "basictests", "tests\basicte
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "canopy", "src\canopy\canopy.fsproj", "{63135CF6-70A9-4382-851D-4B679EE0CBF8}"
EndProject
-Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "sampleprojectstructure", "src\sampleprojectstructure\sampleprojectstructure.fsproj", "{9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}"
-EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{12E9007C-8265-43D8-86B0-C9182921A9E5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{C8531F58-5EAB-413F-BB2F-FE96AE0A55F2}"
@@ -46,6 +44,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{3C3590B5
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "csharptests", "csharptests\csharptests.csproj", "{8FD011AE-ACEC-4B55-810B-736DAE312D32}"
EndProject
+Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "canopy.integration", "src\canopy.integration\canopy.integration.fsproj", "{4303FFAC-759E-4764-89AD-ED6A73E2E16D}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -76,16 +76,6 @@ Global
{63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{63135CF6-70A9-4382-851D-4B679EE0CBF8}.Release|x86.ActiveCfg = Release|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Any CPU.Build.0 = Release|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
- {9DE5614C-8D7F-4BBD-A6A0-24AABD76796C}.Release|x86.ActiveCfg = Release|Any CPU
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -98,6 +88,18 @@ Global
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|x86.ActiveCfg = Release|Any CPU
{8FD011AE-ACEC-4B55-810B-736DAE312D32}.Release|x86.Build.0 = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Debug|x86.Build.0 = Debug|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|x86.ActiveCfg = Release|Any CPU
+ {4303FFAC-759E-4764-89AD-ED6A73E2E16D}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/csharptests/csharptests.csproj b/csharptests/csharptests.csproj
index ce27f28e..c370c3cd 100644
--- a/csharptests/csharptests.csproj
+++ b/csharptests/csharptests.csproj
@@ -54,6 +54,10 @@
+
+ {4303ffac-759e-4764-89ad-ed6a73e2e16d}
+ canopy.integration
+
{63135cf6-70a9-4382-851d-4b679ee0cbf8}
canopy
diff --git a/csharptests/jsonValidatorTests.cs b/csharptests/jsonValidatorTests.cs
index e2526b3e..55765d5e 100644
--- a/csharptests/jsonValidatorTests.cs
+++ b/csharptests/jsonValidatorTests.cs
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using _ = canopy.csharp.canopy;
+using __ = canopy.csharp.integration;
namespace csharptests
{
@@ -31,56 +32,56 @@ public static void All()
_.test("two identical people have no differences", () =>
{
- var diff = _.diffJson(person1, person1);
+ var diff = __.diffJson(person1, person1);
_.equality(diff.Count, empty.Count);
- _.validateJson(person1, person1);
+ __.validateJson(person1, person1);
});
_.test("missing property is identified", () =>
{
- var diff = _.diffJson(person1, person2);
+ var diff = __.diffJson(person1, person2);
_.equality(1, diff.Count);
_.equality(true, diff.Contains("Missing {root}.middle"));
});
_.test("extra property is identified", () =>
{
- var diff = _.diffJson(person1, person3);
+ var diff = __.diffJson(person1, person3);
_.equality(1, diff.Count);
_.equality(true, diff.Contains("Extra {root}.phone"));
});
_.test("empty array is acceptable array of ints", () =>
{
- var diff = _.diffJson(location1, location2);
+ var diff = __.diffJson(location1, location2);
_.equality(diff.Count, empty.Count);
- _.validateJson(location1, location2);
+ __.validateJson(location1, location2);
});
_.test("empty array is acceptable array of records", () =>
{
- var diff = _.diffJson(location3, location4);
+ var diff = __.diffJson(location3, location4);
_.equality(diff.Count, empty.Count);
- _.validateJson(location3, location4);
+ __.validateJson(location3, location4);
});
_.test("missing fields on records in arrays recognized correctly", () =>
{
- var diff = _.diffJson(location3, location5);
+ var diff = __.diffJson(location3, location5);
_.equality(1, diff.Count);
_.equality(true, diff.Contains("Missing {root}.[people].{}.middle"));
});
_.test("extra fields on records in arrays recognized correctly", () =>
{
- var diff = _.diffJson(location3, location6);
+ var diff = __.diffJson(location3, location6);
_.equality(1, diff.Count);
_.equality(true, diff.Contains("Extra {root}.[people].{}.phone"));
});
_.test("renamed field with extra property shows", () =>
{
- var diff = _.diffJson(location7, location8);
+ var diff = __.diffJson(location7, location8);
_.equality(7, diff.Count);
_.equality(true, diff.Contains("Missing {root}.[workers]"));
@@ -94,7 +95,7 @@ public static void All()
_.test("nested objects with arrays reocgnized correctly", () =>
{
- var diff = _.diffJson(class1, class2);
+ var diff = __.diffJson(class1, class2);
_.equality(3, diff.Count);
_.equality(true, diff.Contains("Missing {root}.{location}.long"));
_.equality(true, diff.Contains("Missing {root}.{location}.[people].{}.middle"));
diff --git a/nuget/canopy-edge.nuspec b/nuget/canopy-edge.nuspec
deleted file mode 100644
index f12bf400..00000000
--- a/nuget/canopy-edge.nuspec
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
-
- canopy-edge
- @build.number@
- @authors@
- @authors@
- https://github.com/lefthandedgoat/canopy/blob/master/license.txt
- http://lefthandedgoat.github.io/canopy/canopy_orig.jpg
- http://lefthandedgoat.github.com/canopy
- @description@
- @releaseNotes@
- @tags@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/nuget/canopy.integration.nuspec b/nuget/canopy.integration.nuspec
new file mode 100644
index 00000000..15fb8062
--- /dev/null
+++ b/nuget/canopy.integration.nuspec
@@ -0,0 +1,20 @@
+
+
+
+ canopy.integration
+ @build.number@
+ @authors@
+ @authors@
+ https://github.com/lefthandedgoat/canopy/blob/master/license.txt
+ http://lefthandedgoat.github.io/canopy/canopy_orig.jpg
+ http://lefthandedgoat.github.com/canopy
+ @description@
+ @releaseNotes@
+ @tags@
+
+
+
+
+
+
+
diff --git a/nuget/canopy.nuspec b/nuget/canopy.nuspec
index bf7aed32..a53ddf30 100644
--- a/nuget/canopy.nuspec
+++ b/nuget/canopy.nuspec
@@ -14,7 +14,6 @@
-
diff --git a/paket.dependencies b/paket.dependencies
index 664e58b1..59961069 100644
--- a/paket.dependencies
+++ b/paket.dependencies
@@ -1,5 +1,7 @@
source https://www.nuget.org/api/v2/
+framework: net4
+
nuget NuGet.CommandLine
nuget FSharp.Core >= 3.0.2 lowest_matching:true
nuget Selenium.WebDriver
diff --git a/paket.lock b/paket.lock
index 436714f2..f613e3fe 100644
--- a/paket.lock
+++ b/paket.lock
@@ -1,15 +1,14 @@
+FRAMEWORK: NET40
NUGET
remote: https://www.nuget.org/api/v2
- FAKE (4.52)
+ FAKE (4.61.3)
FSharp.Compiler.Service (2.0.0.6)
FSharp.Core (3.0.2)
FSharp.Data (2.3.3)
- Zlib.Portable (>= 1.11) - framework: >= netstandard11, portable-net45+sl5+win8, portable-net45+win8, portable-net45+win8+wp8+wpa81
FSharp.Formatting (2.14.4)
FSharp.Compiler.Service (2.0.0.6)
FSharpVSPowerTools.Core (>= 2.3 < 2.4)
FSharpVSPowerTools.Core (2.3)
FSharp.Compiler.Service (>= 2.0.0.3)
- NuGet.CommandLine (3.5)
+ NuGet.CommandLine (4.1)
Selenium.WebDriver (3.4)
- Zlib.Portable (1.11) - framework: >= netstandard11, portable-net45+sl5+win8, portable-net45+win8, portable-net45+win8+wp8+wpa81
diff --git a/src/canopy.integration/AssemblyInfo.fs b/src/canopy.integration/AssemblyInfo.fs
new file mode 100644
index 00000000..1b43776f
--- /dev/null
+++ b/src/canopy.integration/AssemblyInfo.fs
@@ -0,0 +1,17 @@
+// Auto-Generated by FAKE; do not edit
+namespace System
+open System.Reflection
+
+[]
+[]
+[]
+[]
+[]
+do ()
+
+module internal AssemblyVersionInformation =
+ let [] AssemblyTitle = "canopy.integration"
+ let [] AssemblyProduct = "canopy.integration"
+ let [] AssemblyDescription = "F# web testing framework"
+ let [] AssemblyVersion = "1.4.5"
+ let [] AssemblyFileVersion = "1.4.5"
diff --git a/src/canopy.integration/canopy.integration.fsproj b/src/canopy.integration/canopy.integration.fsproj
new file mode 100644
index 00000000..bd79a10f
--- /dev/null
+++ b/src/canopy.integration/canopy.integration.fsproj
@@ -0,0 +1,99 @@
+
+
+
+ Debug
+ AnyCPU
+ 8.0.30703
+ 2.0
+ {4303ffac-759e-4764-89ad-ed6a73e2e16d}
+ Library
+ canopy.integration
+ canopy.integration
+ v4.0
+ canopy.integration
+ ..\
+
+
+ true
+ full
+ false
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ 3
+ bin\Debug\canopy.integration.XML
+
+
+ pdbonly
+ true
+ true
+ ..\..\bin
+ TRACE
+ 3
+ ..\..\bin\canopy.integration.XML
+
+
+ 11
+
+
+
+
+ $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets
+
+
+
+
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
+ True
+ True
+
+
+
+
+
+
+
+
+ True
+
+
+ ..\..\packages\FSharp.Data\lib\net40\FSharp.Data.dll
+ True
+ True
+
+
+
+
+
\ No newline at end of file
diff --git a/src/canopy.integration/csharp.fs b/src/canopy.integration/csharp.fs
new file mode 100644
index 00000000..032cd155
--- /dev/null
+++ b/src/canopy.integration/csharp.fs
@@ -0,0 +1,12 @@
+namespace canopy.csharp
+
+
+
+type integration () =
+
+ static member diffJson example actual =
+ let diff = jsonValidator.diff example actual
+ let diffString = diff |> List.map (fun d -> match d with | jsonValidator.Missing s -> sprintf "Missing %s" s | jsonValidator.Extra s -> sprintf "Extra %s" s)
+ ResizeArray(diffString)
+
+ static member validateJson example actual = jsonValidator.validate example actual
\ No newline at end of file
diff --git a/src/canopy/jsonValidator.fs b/src/canopy.integration/jsonValidator.fs
similarity index 100%
rename from src/canopy/jsonValidator.fs
rename to src/canopy.integration/jsonValidator.fs
diff --git a/src/canopy.integration/paket.references b/src/canopy.integration/paket.references
new file mode 100644
index 00000000..940f7853
--- /dev/null
+++ b/src/canopy.integration/paket.references
@@ -0,0 +1,2 @@
+FSharp.Core
+FSharp.Data
\ No newline at end of file
diff --git a/src/canopy/canopy.fsproj b/src/canopy/canopy.fsproj
index 02ce9fc6..a9cd6cec 100644
--- a/src/canopy/canopy.fsproj
+++ b/src/canopy/canopy.fsproj
@@ -63,10 +63,8 @@
-
-
@@ -86,16 +84,7 @@
-->
-
-
-
- ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll
- True
- True
-
-
-
-
+
..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
@@ -104,68 +93,9 @@
-
-
-
- ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- True
-
-
- ..\..\packages\FSharp.Data\lib\net40\FSharp.Data.dll
- True
- True
-
-
-
-
-
-
- ..\..\packages\FSharp.Data\lib\portable-net45+netcore45\FSharp.Data.dll
- True
- True
-
-
-
-
-
-
- ..\..\packages\FSharp.Data\lib\portable-net45+netcore45+wpa81+wp8\FSharp.Data.dll
- True
- True
-
-
-
-
-
-
- ..\..\packages\FSharp.Data\lib\portable-net45+sl50+netcore45\FSharp.Data.dll
- True
- True
-
-
-
-
-
-
-
-
- ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll
- True
- True
-
-
-
-
+
..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll
@@ -175,15 +105,4 @@
-
-
-
-
- ..\..\packages\Zlib.Portable\lib\portable-net4+sl5+wp8+win8+wpa81+MonoTouch+MonoAndroid\Zlib.Portable.dll
- True
- True
-
-
-
-
\ No newline at end of file
diff --git a/src/canopy/csharp.fs b/src/canopy/csharp.fs
index 4b66f3f6..663dbc0c 100644
--- a/src/canopy/csharp.fs
+++ b/src/canopy/csharp.fs
@@ -204,11 +204,4 @@ type canopy () =
static member onn url = onn url
- static member on url = on url
-
- static member diffJson example actual =
- let diff = jsonValidator.diff example actual
- let diffString = diff |> List.map (fun d -> match d with | jsonValidator.Missing s -> sprintf "Missing %s" s | jsonValidator.Extra s -> sprintf "Extra %s" s)
- ResizeArray(diffString)
-
- static member validateJson example actual = jsonValidator.validate example actual
\ No newline at end of file
+ static member on url = on url
\ No newline at end of file
diff --git a/src/canopy/jsValidator.fsx b/src/canopy/jsValidator.fsx
deleted file mode 100644
index b2e85f28..00000000
--- a/src/canopy/jsValidator.fsx
+++ /dev/null
@@ -1,193 +0,0 @@
-module jsonValidator
-
-#r "../../packages/FSharp.Data/lib/net40/FSharp.Data.dll"
-
-open FSharp.Data
-
-let mutable tests : (string * (unit -> unit)) list = []
-let ( &&& ) desc f = tests <- (desc, f) :: tests
-let ( == ) left right = if left <> right then failwith (sprintf "expected %A%sgot %A" right System.Environment.NewLine left)
-let clear () = tests <- []
-let run () = tests |> List.rev |> List.iter (fun (desc, f) -> printfn "%s" desc; try f(); printfn "pass" with ex -> printfn "failed: %s" ex.Message)
-
-type Difference =
- | Missing of string
- | Extra of string
-
-type Type =
- | Array
- | Record
- | AnonymousRecord
- | Property
- | Root
- | None
-
-type Meta =
- {
- Path : string
- ParentPath : string
- Type : Type
- ParentType : Type
- ImmediateOptional : bool
- HistoricalOptional : bool
- }
-
-let root =
- {
- Path = "{root}"
- ParentPath = ""
- Type = Type.Root
- ParentType = Type.None
- ImmediateOptional = false
- HistoricalOptional = false
- }
-
-let jsonValueToType jsonValue =
- match jsonValue with
- | JsonValue.Array _ -> Array
- | JsonValue.Record _ -> Record
- | _ -> Property
-
-let AST jsonValue =
- let rec AST meta jsonValue =
- match jsonValue with
- | JsonValue.String _
- | JsonValue.Number _
- | JsonValue.Float _
- | JsonValue.Boolean _
- | JsonValue.Null -> [| { meta with ImmediateOptional = false } |]
-
- //real work done here
- | JsonValue.Array values ->
- values
- |> Array.map (fun value -> AST { meta with ParentPath = meta.Path; ParentType = Array; Type = jsonValueToType value; ImmediateOptional = true; HistoricalOptional = true } value)
- |> Array.concat
- |> Array.append [| meta |]
-
- //real work done here
- | JsonValue.Record props ->
- let selfType = if meta.ParentType = Array then AnonymousRecord else Record
- let selfImmediateOptional = if meta.ParentType = Array then true else false
- let selfPath = if meta.ParentType = Array then sprintf "%s.{}" meta.Path else meta.Path
- let self = if meta.Type = Root then meta else { meta with Type = selfType; ParentType = meta.ParentType; Path = selfPath; ParentPath = meta.ParentPath; ImmediateOptional = selfImmediateOptional }
- props
- |> Array.map (fun (prop, value) ->
- let type' = jsonValueToType value
- let path =
- match type' with
- | Array -> sprintf "%s.[%s]" self.Path prop
- | Record -> sprintf "%s.{%s}" self.Path prop
- | Property -> sprintf "%s.%s" self.Path prop
- | _ -> failwith (sprintf "should not happen %A" type')
-
- AST { self with Path = path; ParentPath = self.Path; Type = type'; ParentType = self.Type; ImmediateOptional = false } value
- )
- |> Array.concat
- |> Array.append [| self |]
-
- AST root jsonValue
-
-let diff example actual =
- let example = JsonValue.Parse(example) |> AST |> Set.ofArray
- //printfn "example: %A" example
- let actual = JsonValue.Parse(actual) |> AST |> Set.ofArray
- //printfn "actual: %A" actual
-
- let missing =
- let allMissing =
- example - actual
- |> Seq.filter (fun meta -> meta.ImmediateOptional = false && meta.HistoricalOptional = false)
- |> Set.ofSeq
- //printfn "allMissing %A" allMissing
-
- let falsePositives =
- allMissing
- |> Seq.filter (fun meta ->
- (meta.ImmediateOptional = true || meta.HistoricalOptional = true)
- && actual |> Seq.exists (fun meta2 -> meta.ParentPath = meta2.ParentPath))
- |> Set.ofSeq
-
- //printfn "falsePositives %A" falsePositives
-
- allMissing - falsePositives
- |> Seq.map (fun meta -> Missing meta.Path)
- |> List.ofSeq
-
- let missingButWithSiblingsThatArent =
- let optionalThatExistInActual = actual |> Seq.filter (fun meta -> (meta.ImmediateOptional = true || meta.HistoricalOptional = true))
- example - actual
- |> Seq.filter (fun meta -> optionalThatExistInActual |> Seq.exists (fun meta2 -> meta.ParentPath = meta2.ParentPath))
- |> Seq.map (fun meta -> Missing meta.Path)
- |> List.ofSeq
-
- let extra =
- actual - example
- |> Seq.map (fun meta -> Extra meta.Path)
- |> List.ofSeq
-
- missing @ missingButWithSiblingsThatArent @ extra
-
-let person1 = """{ "first":"jane", "middle":"something", "last":"doe" } """
-let person2 = """{ "first":"jane", "last":"doe" } """
-let person3 = """{ "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } """
-
-let location1 = """{ "lat":4.0212, "long":12.102012, "people":[ 1, 2, 3 ] } """
-let location2 = """{ "lat":4.0212, "long":12.102012, "people":[ ] } """
-
-let location3 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe" } ] } """
-let location4 = """{ "lat":4.0212, "long":12.102012, "people":[ ] } """
-let location5 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "last":"doe" } ] } """
-let location6 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } ] } """
-
-let location7 = """{ "lat":4.0212, "long":12.102012, "workers":[ { "first":"jane", "last":"doe" } ] } """
-let location8 = """{ "lat":4.0212, "long":12.102012, "people":[ { "first":"jane", "middle":"something", "last":"doe", "phone":"800-555-5555" } ] } """
-
-let class1 = """{ "name":"bio 101", "building":"science", "location": { "lat":4.0212, "long":12.102012, "people": [ { "first":"jane", "middle":"something", "last":"doe" } ] } }"""
-let class2 = """{ "name":"chem 101", "building":"science", "location": { "lat":4.0212, "lng":12.102012, "people": [ { "first":"jane", "last":"doe" } ] } }"""
-
-"two identical people have no differences" &&& fun _ ->
- diff person1 person1 == []
-
-"missing property is identified" &&& fun _ ->
- diff person1 person2 == [ Missing "{root}.middle" ]
-
-"extra property is identified" &&& fun _ ->
- diff person1 person3 == [ Extra "{root}.phone" ]
-
-"empty array is acceptable array of ints" &&& fun _ ->
- diff location1 location2 == [ ]
-
-"empty array is acceptable array of records" &&& fun _ ->
- diff location3 location4 == [ ]
-
-"missing fields on records in arrays recognized correctly" &&& fun _ ->
- diff location3 location5 == [ Missing "{root}.[people].{}.middle" ]
-
-"extra fields on records in arrays recognized correctly" &&& fun _ ->
- diff location3 location6 == [ Extra "{root}.[people].{}.phone" ]
-
-"renamed field with extra property shows" &&& fun _ ->
- diff location7 location8 ==
- [
- Missing "{root}.[workers]"
-
- Extra "{root}.[people]"
- Extra "{root}.[people].{}"
- Extra "{root}.[people].{}.first"
- Extra "{root}.[people].{}.last"
- Extra "{root}.[people].{}.middle"
- Extra "{root}.[people].{}.phone"
- ]
-
-"nested objects with arrays reocgnized correctly" &&& fun _ ->
- diff class1 class2 ==
- [
- Missing "{root}.{location}.long"
- Missing "{root}.{location}.[people].{}.middle"
-
- Extra "{root}.{location}.lng"
- ]
-
-run()
-
-clear()
diff --git a/src/canopy/paket.references b/src/canopy/paket.references
index 5ce8f2b6..f0c817ae 100644
--- a/src/canopy/paket.references
+++ b/src/canopy/paket.references
@@ -1,3 +1,2 @@
FSharp.Core
-Selenium.WebDriver
-FSharp.Data
\ No newline at end of file
+Selenium.WebDriver
\ No newline at end of file
diff --git a/src/sampleprojectstructure/sampleprojectstructure.fsproj b/src/sampleprojectstructure/sampleprojectstructure.fsproj
index 6a5b59fc..da6b990b 100644
--- a/src/sampleprojectstructure/sampleprojectstructure.fsproj
+++ b/src/sampleprojectstructure/sampleprojectstructure.fsproj
@@ -85,16 +85,7 @@
-->
-
-
-
- ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll
- True
- True
-
-
-
-
+
..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
@@ -103,27 +94,9 @@
-
-
-
- ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll
- True
- True
-
-
-
-
+
..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll
diff --git a/tests/basictests/basictests.fsproj b/tests/basictests/basictests.fsproj
index 2200f3c6..5084c9f6 100644
--- a/tests/basictests/basictests.fsproj
+++ b/tests/basictests/basictests.fsproj
@@ -71,6 +71,11 @@
+
+ canopy.integration
+ {4303ffac-759e-4764-89ad-ed6a73e2e16d}
+ True
+
canopy
{63135cf6-70a9-4382-851d-4b679ee0cbf8}
@@ -86,16 +91,7 @@
-->
-
-
-
- ..\..\packages\FSharp.Core\lib\net35\FSharp.Core.dll
- True
- True
-
-
-
-
+
..\..\packages\FSharp.Core\lib\net40\FSharp.Core.dll
@@ -104,27 +100,9 @@
-
-
-
- ..\..\packages\FSharp.Core\lib\portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1\FSharp.Core.dll
- True
- True
-
-
-
-
-
-
- ..\..\packages\Selenium.WebDriver\lib\net35\WebDriver.dll
- True
- True
-
-
-
-
+
..\..\packages\Selenium.WebDriver\lib\net40\WebDriver.dll