├── CSharp
├── .gitignore
├── BookingApi.Sql
│ ├── BookingApi.Sql.csproj
│ ├── BookingDbSchema.sql
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ └── SqlReservationsProgramVisitor.cs
├── BookingApi.SqlTests
│ ├── BookingApi.SqlTests.csproj
│ ├── ConnectionStrings.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── SqlReservationsProgramVisitorTests.cs
│ ├── UseDatabaseAttribute.cs
│ └── packages.config
├── BookingApi.UnitTests
│ ├── BookingApi.UnitTests.csproj
│ ├── BookingApiTestConventionsAttribute.cs
│ ├── MaîtreDTests.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── StubReservationsVisitor.cs
│ ├── app.config
│ └── packages.config
├── BookingApi.sln
├── BookingApi
│ ├── BookingApi.csproj
│ ├── Create.cs
│ ├── Free.cs
│ ├── IMaybe.cs
│ ├── IMaybeVisitor.cs
│ ├── IMaîtreD.cs
│ ├── IReservationsInstruction.cs
│ ├── IReservationsInstructionVisitor.cs
│ ├── IReservationsProgram.cs
│ ├── IReservationsProgramVisitor.cs
│ ├── IsReservationInFuture.cs
│ ├── Just.cs
│ ├── Maybe.cs
│ ├── MaîtreD.cs
│ ├── Nothing.cs
│ ├── Properties
│ │ └── AssemblyInfo.cs
│ ├── Pure.cs
│ ├── ReadReservations.cs
│ ├── Reservation.cs
│ ├── ReservationsInstruction.cs
│ ├── ReservationsMaybe.cs
│ ├── ReservationsProgram.cs
│ ├── Unit.cs
│ └── packages.config
├── Build.fsx
├── build.sh
└── packages
│ ├── AutoFixture.4.0.1
│ ├── AutoFixture.4.0.1.nupkg
│ └── lib
│ │ ├── net452
│ │ ├── AutoFixture.dll
│ │ ├── AutoFixture.pdb
│ │ └── AutoFixture.xml
│ │ └── netstandard1.5
│ │ ├── AutoFixture.dll
│ │ ├── AutoFixture.pdb
│ │ └── AutoFixture.xml
│ ├── AutoFixture.Xunit2.4.0.1
│ ├── AutoFixture.Xunit2.4.0.1.nupkg
│ └── lib
│ │ ├── net452
│ │ ├── AutoFixture.Xunit2.dll
│ │ ├── AutoFixture.Xunit2.pdb
│ │ └── AutoFixture.Xunit2.xml
│ │ └── netstandard1.5
│ │ ├── AutoFixture.Xunit2.dll
│ │ ├── AutoFixture.Xunit2.pdb
│ │ └── AutoFixture.Xunit2.xml
│ ├── FAKE.4.64.4
│ ├── FAKE.4.64.4.nupkg
│ └── tools
│ │ ├── Argu.dll
│ │ ├── Argu.pdb
│ │ ├── Argu.xml
│ │ ├── FAKE.FSharp.Compiler.Service.dll
│ │ ├── FAKE.exe
│ │ ├── FAKE.exe.config
│ │ ├── FAKE.pdb
│ │ ├── FAKE.pdb.srcsrv
│ │ ├── FSharp.Core.dll
│ │ ├── FSharp.Core.optdata
│ │ ├── FSharp.Core.sigdata
│ │ ├── FSharp.Core.xml
│ │ ├── Fake.Deploy.Lib.dll
│ │ ├── Fake.Deploy.Lib.dll.config
│ │ ├── Fake.Deploy.Lib.pdb
│ │ ├── Fake.Deploy.Lib.pdb.srcsrv
│ │ ├── Fake.Deploy.Lib.xml
│ │ ├── Fake.Deploy.exe
│ │ ├── Fake.Deploy.exe.config
│ │ ├── Fake.Deploy.pdb
│ │ ├── Fake.Deploy.pdb.srcsrv
│ │ ├── Fake.Experimental.XML
│ │ ├── Fake.Experimental.dll
│ │ ├── Fake.Experimental.dll.config
│ │ ├── Fake.Experimental.pdb
│ │ ├── Fake.Experimental.pdb.srcsrv
│ │ ├── Fake.FluentMigrator.XML
│ │ ├── Fake.FluentMigrator.dll
│ │ ├── Fake.FluentMigrator.pdb
│ │ ├── Fake.FluentMigrator.pdb.srcsrv
│ │ ├── Fake.Gallio.XML
│ │ ├── Fake.Gallio.dll
│ │ ├── Fake.Gallio.dll.config
│ │ ├── Fake.Gallio.pdb
│ │ ├── Fake.Gallio.pdb.srcsrv
│ │ ├── Fake.IIS.XML
│ │ ├── Fake.IIS.dll
│ │ ├── Fake.IIS.dll.config
│ │ ├── Fake.IIS.pdb
│ │ ├── Fake.IIS.pdb.srcsrv
│ │ ├── Fake.SQL.XML
│ │ ├── Fake.SQL.dll
│ │ ├── Fake.SQL.dll.config
│ │ ├── Fake.SQL.pdb
│ │ ├── Fake.SQL.pdb.srcsrv
│ │ ├── FakeLib.XML
│ │ ├── FakeLib.dll
│ │ ├── FakeLib.dll.config
│ │ ├── FakeLib.pdb
│ │ ├── FakeLib.pdb.srcsrv
│ │ ├── FluentMigrator.Runner.dll
│ │ ├── FluentMigrator.Runner.pdb
│ │ ├── FluentMigrator.dll
│ │ ├── FluentMigrator.pdb
│ │ ├── FluentMigrator.xml
│ │ ├── HashLib.dll
│ │ ├── ICSharpCode.SharpZipLib.dll
│ │ ├── License.txt
│ │ ├── Microsoft.Build.Utilities.v3.5.dll
│ │ ├── Microsoft.Build.Utilities.v3.5.resources.dll
│ │ ├── Microsoft.Build.Utilities.v3.5.xml
│ │ ├── Microsoft.SqlServer.ConnectionInfo.dll
│ │ ├── Microsoft.SqlServer.Management.Sdk.Sfc.dll
│ │ ├── Microsoft.SqlServer.Smo.dll
│ │ ├── Microsoft.Web.Administration.dll
│ │ ├── Microsoft.Web.XmlTransform.dll
│ │ ├── Mono.Cecil.Mdb.dll
│ │ ├── Mono.Cecil.Pdb.dll
│ │ ├── Mono.Cecil.Rocks.dll
│ │ ├── Mono.Cecil.dll
│ │ ├── NLog.dll
│ │ ├── NLog.xml
│ │ ├── Nancy.Authentication.Stateless.dll
│ │ ├── Nancy.Authentication.Stateless.xml
│ │ ├── Nancy.Hosting.Self.dll
│ │ ├── Nancy.Hosting.Self.xml
│ │ ├── Nancy.Serialization.JsonNet.dll
│ │ ├── Nancy.dll
│ │ ├── Nancy.xml
│ │ ├── Newtonsoft.Json.dll
│ │ ├── Newtonsoft.Json.xml
│ │ ├── NuGet.Core.dll
│ │ ├── README.markdown
│ │ ├── RELEASE_NOTES.md
│ │ ├── Renci.SshNet.dll
│ │ ├── Renci.SshNet.xml
│ │ ├── Serilog.FullNetFx.dll
│ │ ├── Serilog.FullNetFx.pdb
│ │ ├── Serilog.FullNetFx.xml
│ │ ├── Serilog.Sinks.NLog.dll
│ │ ├── Serilog.Sinks.NLog.xml
│ │ ├── Serilog.dll
│ │ ├── Serilog.pdb
│ │ ├── Serilog.xml
│ │ ├── StyleCop.CSharp.Rules.dll
│ │ ├── StyleCop.CSharp.dll
│ │ ├── StyleCop.dll
│ │ ├── System.Buffers.dll
│ │ ├── System.Diagnostics.DiagnosticSource.dll
│ │ ├── System.Diagnostics.DiagnosticSource.xml
│ │ ├── System.Net.Http.Extensions.dll
│ │ ├── System.Net.Http.Extensions.xml
│ │ ├── System.Net.Http.Primitives.dll
│ │ ├── System.Net.Http.Primitives.xml
│ │ ├── System.Runtime.InteropServices.RuntimeInformation.dll
│ │ ├── System.Threading.Tasks.Extensions.dll
│ │ ├── System.Threading.Tasks.Extensions.xml
│ │ ├── System.ValueTuple.dll
│ │ ├── VSFile.dll
│ │ └── VSFile.xml
│ ├── System.Threading.Tasks.Extensions.4.3.0
│ ├── System.Threading.Tasks.Extensions.4.3.0.nupkg
│ ├── ThirdPartyNotices.txt
│ ├── dotnet_library_license.txt
│ └── lib
│ │ ├── netstandard1.0
│ │ ├── System.Threading.Tasks.Extensions.dll
│ │ └── System.Threading.Tasks.Extensions.xml
│ │ └── portable-net45+win8+wp8+wpa81
│ │ ├── System.Threading.Tasks.Extensions.dll
│ │ └── System.Threading.Tasks.Extensions.xml
│ ├── System.ValueTuple.4.3.0
│ ├── System.ValueTuple.4.3.0.nupkg
│ ├── ThirdPartyNotices.txt
│ ├── dotnet_library_license.txt
│ └── lib
│ │ ├── netstandard1.0
│ │ ├── .xml
│ │ └── System.ValueTuple.dll
│ │ └── portable-net40+sl4+win8+wp8
│ │ ├── .xml
│ │ └── System.ValueTuple.dll
│ ├── xunit.2.3.1
│ └── xunit.2.3.1.nupkg
│ ├── xunit.abstractions.2.0.1
│ ├── lib
│ │ ├── net35
│ │ │ ├── xunit.abstractions.dll
│ │ │ └── xunit.abstractions.xml
│ │ └── netstandard1.0
│ │ │ ├── xunit.abstractions.dll
│ │ │ └── xunit.abstractions.xml
│ └── xunit.abstractions.2.0.1.nupkg
│ ├── xunit.analyzers.0.7.0
│ ├── analyzers
│ │ └── dotnet
│ │ │ └── cs
│ │ │ └── xunit.analyzers.dll
│ ├── tools
│ │ ├── install.ps1
│ │ └── uninstall.ps1
│ └── xunit.analyzers.0.7.0.nupkg
│ ├── xunit.assert.2.3.1
│ ├── lib
│ │ └── netstandard1.1
│ │ │ ├── xunit.assert.dll
│ │ │ └── xunit.assert.xml
│ └── xunit.assert.2.3.1.nupkg
│ ├── xunit.core.2.3.1
│ ├── build
│ │ ├── xunit.core.props
│ │ ├── xunit.core.targets
│ │ └── xunit.execution.desktop.dll
│ ├── buildMultiTargeting
│ │ ├── xunit.core.props
│ │ └── xunit.core.targets
│ └── xunit.core.2.3.1.nupkg
│ ├── xunit.extensibility.core.2.3.1
│ ├── lib
│ │ └── netstandard1.1
│ │ │ ├── xunit.core.dll
│ │ │ ├── xunit.core.dll.tdnet
│ │ │ ├── xunit.core.xml
│ │ │ ├── xunit.runner.tdnet.dll
│ │ │ └── xunit.runner.utility.net452.dll
│ └── xunit.extensibility.core.2.3.1.nupkg
│ ├── xunit.extensibility.execution.2.3.1
│ ├── lib
│ │ ├── net452
│ │ │ ├── xunit.execution.desktop.dll
│ │ │ └── xunit.execution.desktop.xml
│ │ └── netstandard1.1
│ │ │ ├── xunit.execution.dotnet.dll
│ │ │ └── xunit.execution.dotnet.xml
│ └── xunit.extensibility.execution.2.3.1.nupkg
│ └── xunit.runner.console.2.3.1
│ ├── build
│ └── xunit.runner.console.props
│ ├── tools
│ ├── net452
│ │ ├── xunit.abstractions.dll
│ │ ├── xunit.console.exe
│ │ ├── xunit.console.exe.config
│ │ ├── xunit.console.x86.exe
│ │ ├── xunit.console.x86.exe.config
│ │ ├── xunit.runner.reporters.net452.dll
│ │ └── xunit.runner.utility.net452.dll
│ ├── netcoreapp1.0
│ │ ├── xunit.abstractions.dll
│ │ ├── xunit.console.deps.json
│ │ ├── xunit.console.dll
│ │ ├── xunit.console.dll.config
│ │ ├── xunit.console.runtimeconfig.json
│ │ ├── xunit.runner.reporters.netcoreapp10.dll
│ │ ├── xunit.runner.utility.netcoreapp10.dll
│ │ └── xunit.runner.utility.netcoreapp10.xml
│ └── netcoreapp2.0
│ │ ├── xunit.abstractions.dll
│ │ ├── xunit.console.deps.json
│ │ ├── xunit.console.dll
│ │ ├── xunit.console.dll.config
│ │ ├── xunit.console.runtimeconfig.json
│ │ ├── xunit.runner.reporters.netcoreapp10.dll
│ │ ├── xunit.runner.utility.netcoreapp10.dll
│ │ └── xunit.runner.utility.netcoreapp10.xml
│ └── xunit.runner.console.2.3.1.nupkg
├── FSharp
├── .gitignore
├── BookingApi.UnitTests
│ ├── AssemblyInfo.fs
│ ├── BookingApi.UnitTests.fsproj
│ ├── Gen.fs
│ ├── Tests.fs
│ └── packages.config
├── BookingApi.sln
├── BookingApi
│ ├── AssemblyInfo.fs
│ ├── Booking.fs
│ ├── BookingApi.fsproj
│ ├── Reservations.fs
│ ├── ReservationsOption.fs
│ └── packages.config
└── packages
│ ├── FSharp.Core.4.3.4
│ ├── FSharp.Core.4.3.4.nupkg
│ └── lib
│ │ ├── net45
│ │ ├── FSharp.Core.dll
│ │ ├── FSharp.Core.optdata
│ │ ├── FSharp.Core.sigdata
│ │ ├── FSharp.Core.xml
│ │ ├── UnitTests
│ │ │ └── MockTypeProviders
│ │ │ │ ├── cs
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── de
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── en
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── es
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── fr
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── it
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── ja
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── ko
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── pl
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── pt-BR
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── ru
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── tr
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ ├── zh-Hans
│ │ │ │ └── FSharp.Core.resources.dll
│ │ │ │ └── zh-Hant
│ │ │ │ └── FSharp.Core.resources.dll
│ │ ├── cs
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── de
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── en
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── es
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── fr
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── it
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── ja
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── ko
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── pl
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── pt-BR
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── ru
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── tr
│ │ │ └── FSharp.Core.resources.dll
│ │ ├── zh-Hans
│ │ │ └── FSharp.Core.resources.dll
│ │ └── zh-Hant
│ │ │ └── FSharp.Core.resources.dll
│ │ └── netstandard1.6
│ │ ├── FSharp.Core.dll
│ │ ├── FSharp.Core.optdata
│ │ ├── FSharp.Core.sigdata
│ │ ├── FSharp.Core.xml
│ │ ├── cs
│ │ └── FSharp.Core.resources.dll
│ │ ├── de
│ │ └── FSharp.Core.resources.dll
│ │ ├── en
│ │ └── FSharp.Core.resources.dll
│ │ ├── es
│ │ └── FSharp.Core.resources.dll
│ │ ├── fr
│ │ └── FSharp.Core.resources.dll
│ │ ├── it
│ │ └── FSharp.Core.resources.dll
│ │ ├── ja
│ │ └── FSharp.Core.resources.dll
│ │ ├── ko
│ │ └── FSharp.Core.resources.dll
│ │ ├── pl
│ │ └── FSharp.Core.resources.dll
│ │ ├── pt-BR
│ │ └── FSharp.Core.resources.dll
│ │ ├── ru
│ │ └── FSharp.Core.resources.dll
│ │ ├── tr
│ │ └── FSharp.Core.resources.dll
│ │ ├── zh-Hans
│ │ └── FSharp.Core.resources.dll
│ │ └── zh-Hant
│ │ └── FSharp.Core.resources.dll
│ ├── Hedgehog.0.7.0.0
│ ├── Hedgehog.0.7.0.0.nupkg
│ └── lib
│ │ └── netstandard1.6
│ │ ├── Hedgehog.XML
│ │ └── Hedgehog.dll
│ ├── System.Collections.Specialized.4.0.1
│ ├── System.Collections.Specialized.4.0.1.nupkg
│ ├── ThirdPartyNotices.txt
│ ├── dotnet_library_license.txt
│ ├── lib
│ │ ├── MonoAndroid10
│ │ │ └── _._
│ │ ├── MonoTouch10
│ │ │ └── _._
│ │ ├── net46
│ │ │ └── System.Collections.Specialized.dll
│ │ ├── netstandard1.3
│ │ │ └── System.Collections.Specialized.dll
│ │ ├── xamarinios10
│ │ │ └── _._
│ │ ├── xamarinmac20
│ │ │ └── _._
│ │ ├── xamarintvos10
│ │ │ └── _._
│ │ └── xamarinwatchos10
│ │ │ └── _._
│ └── ref
│ │ ├── MonoAndroid10
│ │ └── _._
│ │ ├── MonoTouch10
│ │ └── _._
│ │ ├── net46
│ │ └── System.Collections.Specialized.dll
│ │ ├── netstandard1.3
│ │ ├── System.Collections.Specialized.dll
│ │ ├── System.Collections.Specialized.xml
│ │ ├── de
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── es
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── fr
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── it
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── ja
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── ko
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── ru
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── zh-hans
│ │ │ └── System.Collections.Specialized.xml
│ │ └── zh-hant
│ │ │ └── System.Collections.Specialized.xml
│ │ ├── xamarinios10
│ │ └── _._
│ │ ├── xamarinmac20
│ │ └── _._
│ │ ├── xamarintvos10
│ │ └── _._
│ │ └── xamarinwatchos10
│ │ └── _._
│ ├── System.ValueTuple.4.3.1
│ ├── System.ValueTuple.4.3.1.nupkg
│ ├── ThirdPartyNotices.txt
│ ├── dotnet_library_license.txt
│ ├── lib
│ │ ├── MonoAndroid10
│ │ │ └── _._
│ │ ├── MonoTouch10
│ │ │ └── _._
│ │ ├── netstandard1.0
│ │ │ ├── .xml
│ │ │ └── System.ValueTuple.dll
│ │ ├── portable-net40+sl4+win8+wp8
│ │ │ ├── .xml
│ │ │ └── System.ValueTuple.dll
│ │ ├── xamarinios10
│ │ │ └── _._
│ │ ├── xamarinmac20
│ │ │ └── _._
│ │ ├── xamarintvos10
│ │ │ └── _._
│ │ └── xamarinwatchos10
│ │ │ └── _._
│ └── ref
│ │ ├── MonoAndroid10
│ │ └── _._
│ │ ├── MonoTouch10
│ │ └── _._
│ │ ├── xamarinios10
│ │ └── _._
│ │ ├── xamarinmac20
│ │ └── _._
│ │ ├── xamarintvos10
│ │ └── _._
│ │ └── xamarinwatchos10
│ │ └── _._
│ ├── Unquote.4.0.0
│ ├── Unquote.4.0.0.nupkg
│ └── lib
│ │ ├── net45
│ │ ├── Unquote.dll
│ │ └── Unquote.xml
│ │ └── netstandard2.0
│ │ ├── Unquote.dll
│ │ └── Unquote.xml
│ ├── xunit.abstractions.2.0.1
│ ├── lib
│ │ ├── net35
│ │ │ ├── xunit.abstractions.dll
│ │ │ └── xunit.abstractions.xml
│ │ └── netstandard1.0
│ │ │ ├── xunit.abstractions.dll
│ │ │ └── xunit.abstractions.xml
│ └── xunit.abstractions.2.0.1.nupkg
│ ├── xunit.core.2.3.1
│ ├── build
│ │ ├── xunit.core.props
│ │ ├── xunit.core.targets
│ │ └── xunit.execution.desktop.dll
│ ├── buildMultiTargeting
│ │ ├── xunit.core.props
│ │ └── xunit.core.targets
│ └── xunit.core.2.3.1.nupkg
│ ├── xunit.extensibility.core.2.3.1
│ ├── lib
│ │ └── netstandard1.1
│ │ │ ├── xunit.core.dll
│ │ │ ├── xunit.core.dll.tdnet
│ │ │ ├── xunit.core.xml
│ │ │ ├── xunit.runner.tdnet.dll
│ │ │ └── xunit.runner.utility.net452.dll
│ └── xunit.extensibility.core.2.3.1.nupkg
│ └── xunit.extensibility.execution.2.3.1
│ ├── lib
│ ├── net452
│ │ ├── xunit.execution.desktop.dll
│ │ └── xunit.execution.desktop.xml
│ └── netstandard1.1
│ │ ├── xunit.execution.dotnet.dll
│ │ └── xunit.execution.dotnet.xml
│ └── xunit.extensibility.execution.2.3.1.nupkg
├── Haskell
├── .gitignore
├── BookingApi.cabal
├── Setup.hs
├── app
│ └── Main.hs
├── src
│ └── BookingApi.hs
├── stack.yaml
└── test
│ └── Spec.hs
├── LICENSE
└── README.md
/CSharp/.gitignore:
--------------------------------------------------------------------------------
1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2 | [Bb]in/
3 | [Oo]bj/
4 |
5 | # MsTest test results
6 | TestResults
7 |
8 | ## Ignore Visual Studio temporary files, build results, and
9 | ## files generated by popular Visual Studio add-ons.
10 |
11 | # User-specific files
12 | *.suo
13 | *.user
14 | *.sln.docstates
15 | .vs/
16 |
17 | # Build results
18 | [Dd]ebug/
19 | [Rr]elease/
20 | x64/
21 | *_i.c
22 | *_p.c
23 | *.ilk
24 | *.meta
25 | *.obj
26 | *.pch
27 | *.pgc
28 | *.pgd
29 | *.rsp
30 | *.sbr
31 | *.tlb
32 | *.tli
33 | *.tlh
34 | *.tmp
35 | *.log
36 | *.vspscc
37 | *.vssscc
38 | .builds
39 |
40 | # Visual C++ cache files
41 | ipch/
42 | *.aps
43 | *.ncb
44 | *.opensdf
45 | *.sdf
46 |
47 | # Visual Studio profiler
48 | *.psess
49 | *.vsp
50 | *.vspx
51 |
52 | # Guidance Automation Toolkit
53 | *.gpState
54 |
55 | # ReSharper is a .NET coding add-in
56 | _ReSharper*
57 |
58 | # NCrunch
59 | *.ncrunch*
60 | .*crunch*.local.xml
61 |
62 | # Installshield output folder
63 | [Ee]xpress
64 |
65 | # DocProject is a documentation generator add-in
66 | DocProject/buildhelp/
67 | DocProject/Help/*.HxT
68 | DocProject/Help/*.HxC
69 | DocProject/Help/*.hhc
70 | DocProject/Help/*.hhk
71 | DocProject/Help/*.hhp
72 | DocProject/Help/Html2
73 | DocProject/Help/html
74 |
75 | # Click-Once directory
76 | publish
77 |
78 | # Publish Web Output
79 | *.Publish.xml
80 |
81 | # Windows Azure Build Output
82 | csx
83 | *.build.csdef
84 |
85 | # Windows Store app package directory
86 | AppPackages/
87 |
88 | # Backup & report files from converting an old project file to a newer
89 | # Visual Studio version. Backup files are not needed, because we have git ;-)
90 | _Upgr/
91 | Backup*/
92 | UpgradeLog*.XML
93 |
94 | # FAKE hidden directory
95 | .fake/
96 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.Sql/BookingApi.Sql.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}
8 | Library
9 | Properties
10 | Ploeh.Samples.BookingApi.Sql
11 | Ploeh.Samples.BookingApi.Sql
12 | v4.6.1
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | bin\Debug\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 |
24 |
25 | pdbonly
26 | true
27 | bin\Release\
28 | TRACE
29 | prompt
30 | 4
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 | {1ad71eec-b0f5-4917-a5c5-2e33abbdfb13}
49 | BookingApi
50 |
51 |
52 |
53 |
54 | Always
55 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.Sql/BookingDbSchema.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE [Booking]
2 | GO
3 |
4 | USE [Booking]
5 | GO
6 |
7 | CREATE TABLE [dbo].[Reservations] (
8 | [Id] INT NOT NULL IDENTITY,
9 | [Date] DATETIMEOFFSET (7) NOT NULL,
10 | [Name] NVARCHAR (50) NOT NULL,
11 | [Email] NVARCHAR (50) NOT NULL,
12 | [Quantity] INT NOT NULL,
13 | PRIMARY KEY CLUSTERED ([Id] ASC)
14 | )
15 | GO
--------------------------------------------------------------------------------
/CSharp/BookingApi.Sql/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("BookingApi.Sql")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("BookingApi.Sql")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("1d24d39b-0cb0-4a46-93f6-bae9289f6859")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.Sql/SqlReservationsProgramVisitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Data.SqlClient;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 |
8 | namespace Ploeh.Samples.BookingApi.Sql
9 | {
10 | public class SqlReservationsProgramVisitor :
11 | IReservationsProgramVisitor,
12 | IReservationsInstructionVisitor, T>
13 | {
14 | private readonly string connectionString;
15 |
16 | public SqlReservationsProgramVisitor(string connectionString)
17 | {
18 | this.connectionString = connectionString;
19 | }
20 |
21 | public T VisitPure(T x)
22 | {
23 | return x;
24 | }
25 |
26 | public T VisitFree(IReservationsInstruction> i)
27 | {
28 | return i.Accept(this);
29 | }
30 |
31 | public T VisitIsReservationInFuture(
32 | Reservation reservation,
33 | Func> continuation)
34 | {
35 | var isInFuture = DateTimeOffset.Now < reservation.Date;
36 | return continuation(isInFuture).Accept(this);
37 | }
38 |
39 | public T VisitReadReservations(
40 | DateTimeOffset date,
41 | Func, IReservationsProgram> continuation)
42 | {
43 | var reservations = ReadReservations(
44 | date.Date,
45 | date.Date.AddDays(1).AddTicks(-1));
46 | return continuation(reservations).Accept(this);
47 | }
48 |
49 | private IReadOnlyCollection ReadReservations(
50 | DateTimeOffset min,
51 | DateTimeOffset max)
52 | {
53 | var result = new List();
54 |
55 | using (var conn = new SqlConnection(connectionString))
56 | using (var cmd = new SqlCommand(readByRangeSql, conn))
57 | {
58 | cmd.Parameters.Add(new SqlParameter("@MinDate", min));
59 | cmd.Parameters.Add(new SqlParameter("@MaxDate", max));
60 |
61 | conn.Open();
62 | using (var rdr = cmd.ExecuteReader())
63 | {
64 | while (rdr.Read())
65 | result.Add(
66 | new Reservation
67 | {
68 | Date = (DateTimeOffset)rdr["Date"],
69 | Name = (string)rdr["Name"],
70 | Email = (string)rdr["Email"],
71 | Quantity = (int)rdr["Quantity"]
72 | });
73 | }
74 | }
75 |
76 | return result;
77 | }
78 |
79 | private const string readByRangeSql = @"
80 | SELECT [Date], [Name], [Email], [Quantity]
81 | FROM [dbo].[Reservations]
82 | WHERE YEAR(@MinDate) <= YEAR([Date])
83 | AND MONTH(@MinDate) <= MONTH([Date])
84 | AND DAY(@MinDate) <= DAY([Date])
85 | AND YEAR([Date]) <= YEAR(@MaxDate)
86 | AND MONTH([Date]) <= MONTH(@MaxDate)
87 | AND DAY([Date]) <= DAY(@MaxDate)";
88 |
89 | public T VisitCreate(
90 | Reservation reservation,
91 | Func> continuation)
92 | {
93 | return continuation(Create(reservation)).Accept(this);
94 | }
95 |
96 | private int Create(Reservation reservation)
97 | {
98 | using (var conn = new SqlConnection(connectionString))
99 | using (var cmd = new SqlCommand(createReservationSql, conn))
100 | {
101 | cmd.Parameters.Add(
102 | new SqlParameter("@Date", reservation.Date));
103 | cmd.Parameters.Add(
104 | new SqlParameter("@Name", reservation.Name));
105 | cmd.Parameters.Add(
106 | new SqlParameter("@Email", reservation.Email));
107 | cmd.Parameters.Add(
108 | new SqlParameter("@Quantity", reservation.Quantity));
109 |
110 | conn.Open();
111 | return cmd.ExecuteNonQuery();
112 | }
113 | }
114 |
115 | private const string createReservationSql = @"
116 | INSERT INTO [dbo].[Reservations] ([Date], [Name], [Email], [Quantity])
117 | VALUES (@Date, @Name, @Email, @Quantity)";
118 | }
119 | }
120 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.SqlTests/ConnectionStrings.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi.SqlTests
8 | {
9 | public class ConnectionStrings
10 | {
11 | public const string Reservations =
12 | @"Server=(LocalDB)\MSSQLLocalDB;Database=Booking;Integrated Security=true;Pooling=false";
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.SqlTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("BookingApi.SqlTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("BookingApi.SqlTests")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("71c94936-0ff3-4cfa-b2a7-9a9625c63d51")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.SqlTests/UseDatabaseAttribute.cs:
--------------------------------------------------------------------------------
1 | using Ploeh.Samples.BookingApi.Sql;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Data.SqlClient;
5 | using System.IO;
6 | using System.Linq;
7 | using System.Reflection;
8 | using System.Text;
9 | using System.Threading.Tasks;
10 | using Xunit.Sdk;
11 |
12 | namespace Ploeh.Samples.BookingApi.SqlTests
13 | {
14 | public class UseDatabaseAttribute : BeforeAfterTestAttribute
15 | {
16 | public override void Before(MethodInfo methodUnderTest)
17 | {
18 | using (var schemaStream = ReadSchema())
19 | using (var rdr = new StreamReader(schemaStream))
20 | {
21 | var schemaSql = rdr.ReadToEnd();
22 |
23 | var builder = new SqlConnectionStringBuilder(
24 | ConnectionStrings.Reservations);
25 | builder.InitialCatalog = "Master";
26 | using (var conn = new SqlConnection(builder.ConnectionString))
27 | using (var cmd = new SqlCommand())
28 | {
29 | conn.Open();
30 | cmd.Connection = conn;
31 |
32 | foreach (var sql in SeperateStatements(schemaSql))
33 | {
34 | cmd.CommandText = sql;
35 | cmd.ExecuteNonQuery();
36 | }
37 | }
38 | }
39 |
40 | base.Before(methodUnderTest);
41 | }
42 |
43 | private Stream ReadSchema()
44 | {
45 | return typeof(SqlReservationsProgramVisitor<>)
46 | .Assembly
47 | .GetManifestResourceStream(
48 | "Ploeh.Samples.BookingApi.Sql.BookingDbSchema.sql");
49 | }
50 |
51 | private static IEnumerable SeperateStatements(string schemaSql)
52 | {
53 | return schemaSql.Split(
54 | new[] { "GO" },
55 | StringSplitOptions.RemoveEmptyEntries);
56 | }
57 |
58 | public override void After(MethodInfo methodUnderTest)
59 | {
60 | base.After(methodUnderTest);
61 |
62 | var dropCmd = @"
63 | IF EXISTS (SELECT name
64 | FROM master.dbo.sysdatabases
65 | WHERE name = N'Booking')
66 | DROP DATABASE[Booking];";
67 |
68 | var builder = new SqlConnectionStringBuilder(
69 | ConnectionStrings.Reservations);
70 | builder.InitialCatalog = "Master";
71 | using (var conn = new SqlConnection(builder.ConnectionString))
72 | using (var cmd = new SqlCommand(dropCmd, conn))
73 | {
74 | conn.Open();
75 | cmd.ExecuteNonQuery();
76 | }
77 | }
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.SqlTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/BookingApiTestConventionsAttribute.cs:
--------------------------------------------------------------------------------
1 | using AutoFixture;
2 | using AutoFixture.Xunit2;
3 | using System;
4 |
5 | namespace Ploeh.Samples.BookingApi.UnitTests
6 | {
7 | public class BookingApiTestConventionsAttribute : AutoDataAttribute
8 | {
9 | public BookingApiTestConventionsAttribute() :
10 | base(() => new Fixture())
11 | {
12 | }
13 | }
14 | }
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/MaîtreDTests.cs:
--------------------------------------------------------------------------------
1 | using AutoFixture.Xunit2;
2 | using System;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.Text;
6 | using System.Threading.Tasks;
7 | using Xunit;
8 |
9 | namespace Ploeh.Samples.BookingApi.UnitTests
10 | {
11 | public class MaîtreDTests
12 | {
13 | [Theory, BookingApiTestConventions]
14 | public void TryAcceptReturnsReservationIdInHappyPathScenario(
15 | Reservation reservation,
16 | IReadOnlyCollection reservations,
17 | MaîtreD sut,
18 | int excessCapacity,
19 | int expected)
20 | {
21 | var reservedSeats = reservations.Sum(r => r.Quantity);
22 | reservation.IsAccepted = false;
23 | sut = sut.WithCapacity(
24 | reservedSeats + reservation.Quantity + excessCapacity);
25 |
26 | var actual = sut.TryAccept(reservation);
27 |
28 | Assert.Equal(
29 | new Just(expected),
30 | actual.Accept(new StubReservationsVisitor>(true, reservations, expected)));
31 | Assert.True(reservation.IsAccepted);
32 | }
33 |
34 | [Theory, BookingApiTestConventions]
35 | public void TryAcceptReturnsNullOnReservationInThePast(
36 | Reservation reservation,
37 | IReadOnlyCollection reservations,
38 | int id,
39 | MaîtreD sut)
40 | {
41 | reservation.IsAccepted = false;
42 |
43 | var actual = sut.TryAccept(reservation);
44 |
45 | Assert.True(
46 | actual.Accept(new StubReservationsVisitor>(false, reservations, id)).IsNothing());
47 | Assert.False(reservation.IsAccepted);
48 | }
49 |
50 | [Theory, BookingApiTestConventions]
51 | public void TryAcceptReturnsNullOnInsufficientCapacity(
52 | Reservation reservation,
53 | IReadOnlyCollection reservations,
54 | int id,
55 | MaîtreD sut)
56 | {
57 | reservation.IsAccepted = false;
58 | var reservedSeats = reservations.Sum(r => r.Quantity);
59 | sut = sut.WithCapacity(reservedSeats + reservation.Quantity - 1);
60 |
61 | var actual = sut.TryAccept(reservation);
62 |
63 | Assert.True(
64 | actual.Accept(new StubReservationsVisitor>(true, reservations, id)).IsNothing());
65 | Assert.False(reservation.IsAccepted);
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("BookingApi.UnitTests")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("BookingApi.UnitTests")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("c920718b-18ca-4013-8a2a-451e3f03420e")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/StubReservationsVisitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi.UnitTests
8 | {
9 | public class StubReservationsVisitor :
10 | IReservationsProgramVisitor,
11 | IReservationsInstructionVisitor, T>
12 | {
13 | private readonly bool isInFuture;
14 | private readonly IReadOnlyCollection reservations;
15 | private readonly int id;
16 |
17 | public StubReservationsVisitor(
18 | bool isInFuture,
19 | IReadOnlyCollection reservations,
20 | int id)
21 | {
22 | this.isInFuture = isInFuture;
23 | this.reservations = reservations;
24 | this.id = id;
25 | }
26 |
27 | public T VisitPure(T x)
28 | {
29 | return x;
30 | }
31 |
32 | public T VisitFree(IReservationsInstruction> i)
33 | {
34 | return i.Accept(this);
35 | }
36 |
37 | public T VisitIsReservationInFuture(
38 | Reservation reservation,
39 | Func> continuation)
40 | {
41 | return continuation(isInFuture).Accept(this);
42 | }
43 |
44 | public T VisitReadReservations(
45 | DateTimeOffset date,
46 | Func, IReservationsProgram> continuation)
47 | {
48 | return continuation(reservations).Accept(this);
49 | }
50 |
51 | public T VisitCreate(
52 | Reservation reservation,
53 | Func> continuation)
54 | {
55 | return continuation(id).Accept(this);
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27130.2026
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi", "BookingApi\BookingApi.csproj", "{1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}"
7 | EndProject
8 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F7C500BD-9B95-4031-A1A0-01B8CF3C530D}"
9 | ProjectSection(SolutionItems) = preProject
10 | Build.fsx = Build.fsx
11 | EndProjectSection
12 | EndProject
13 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.UnitTests", "BookingApi.UnitTests\BookingApi.UnitTests.csproj", "{C920718B-18CA-4013-8A2A-451E3F03420E}"
14 | EndProject
15 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.Sql", "BookingApi.Sql\BookingApi.Sql.csproj", "{1D24D39B-0CB0-4A46-93F6-BAE9289F6859}"
16 | EndProject
17 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BookingApi.SqlTests", "BookingApi.SqlTests\BookingApi.SqlTests.csproj", "{71C94936-0FF3-4CFA-B2A7-9A9625C63D51}"
18 | EndProject
19 | Global
20 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
21 | Debug|Any CPU = Debug|Any CPU
22 | Release|Any CPU = Release|Any CPU
23 | EndGlobalSection
24 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
25 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
26 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Debug|Any CPU.Build.0 = Debug|Any CPU
27 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Release|Any CPU.ActiveCfg = Release|Any CPU
28 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}.Release|Any CPU.Build.0 = Release|Any CPU
29 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
30 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Debug|Any CPU.Build.0 = Debug|Any CPU
31 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Release|Any CPU.ActiveCfg = Release|Any CPU
32 | {C920718B-18CA-4013-8A2A-451E3F03420E}.Release|Any CPU.Build.0 = Release|Any CPU
33 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
34 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Debug|Any CPU.Build.0 = Debug|Any CPU
35 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Release|Any CPU.ActiveCfg = Release|Any CPU
36 | {1D24D39B-0CB0-4A46-93F6-BAE9289F6859}.Release|Any CPU.Build.0 = Release|Any CPU
37 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
38 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Debug|Any CPU.Build.0 = Debug|Any CPU
39 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Release|Any CPU.ActiveCfg = Release|Any CPU
40 | {71C94936-0FF3-4CFA-B2A7-9A9625C63D51}.Release|Any CPU.Build.0 = Release|Any CPU
41 | EndGlobalSection
42 | GlobalSection(SolutionProperties) = preSolution
43 | HideSolutionNode = FALSE
44 | EndGlobalSection
45 | GlobalSection(ExtensibilityGlobals) = postSolution
46 | SolutionGuid = {473AFC14-011A-4D20-A262-57937258F084}
47 | EndGlobalSection
48 | EndGlobal
49 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/BookingApi.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | {1AD71EEC-B0F5-4917-A5C5-2E33ABBDFB13}
8 | Library
9 | Properties
10 | Ploeh.Samples.BookingApi
11 | Ploeh.Samples.BookingApi
12 | v4.6.1
13 | 512
14 |
15 |
16 | true
17 | full
18 | false
19 | bin\Debug\
20 | DEBUG;TRACE
21 | prompt
22 | 4
23 |
24 |
25 | pdbonly
26 | true
27 | bin\Release\
28 | TRACE
29 | prompt
30 | 4
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Create.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class Create : IReservationsInstruction
10 | {
11 | private readonly Reservation reservation;
12 | private readonly Func continuation;
13 |
14 | public Create(
15 | Reservation reservation,
16 | Func continuation)
17 | {
18 | this.reservation = reservation;
19 | this.continuation = continuation;
20 | }
21 |
22 | public TResult Accept(
23 | IReservationsInstructionVisitor visitor)
24 | {
25 | return visitor.VisitCreate(reservation, continuation);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Free.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class Free : IReservationsProgram
10 | {
11 | private readonly IReservationsInstruction> i;
12 |
13 | public Free(IReservationsInstruction> i)
14 | {
15 | this.i = i;
16 | }
17 |
18 | public TResult Accept(
19 | IReservationsProgramVisitor visitor)
20 | {
21 | return visitor.VisitFree(this.i);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IMaybe.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IMaybe
10 | {
11 | TResult Accept(IMaybeVisitor visitor);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IMaybeVisitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IMaybeVisitor
10 | {
11 | TResult VisitNothing { get; }
12 |
13 | TResult VisitJust(T just);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IMaîtreD.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IMaîtreD
10 | {
11 | IReservationsProgram> TryAccept(Reservation reservation);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IReservationsInstruction.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IReservationsInstruction
10 | {
11 | TResult Accept(
12 | IReservationsInstructionVisitor visitor);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IReservationsInstructionVisitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IReservationsInstructionVisitor
10 | {
11 | TResult VisitIsReservationInFuture(
12 | Reservation reservation,
13 | Func continuation);
14 | TResult VisitReadReservations(
15 | DateTimeOffset date,
16 | Func, T> continuation);
17 | TResult VisitCreate(
18 | Reservation reservation,
19 | Func continuation);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IReservationsProgram.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IReservationsProgram
10 | {
11 | TResult Accept(
12 | IReservationsProgramVisitor visitor);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IReservationsProgramVisitor.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public interface IReservationsProgramVisitor
10 | {
11 | TResult VisitFree(IReservationsInstruction> i);
12 | TResult VisitPure(T x);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/IsReservationInFuture.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class IsReservationInFuture : IReservationsInstruction
10 | {
11 | private readonly Reservation reservation;
12 | private readonly Func continuation;
13 |
14 | public IsReservationInFuture(
15 | Reservation reservation,
16 | Func continuation)
17 | {
18 | this.reservation = reservation;
19 | this.continuation = continuation;
20 | }
21 |
22 | public TResult Accept(
23 | IReservationsInstructionVisitor visitor)
24 | {
25 | return
26 | visitor.VisitIsReservationInFuture(reservation, continuation);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Just.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public sealed class Just : IMaybe
10 | {
11 | private readonly T value;
12 |
13 | public Just(T value)
14 | {
15 | this.value = value;
16 | }
17 |
18 | public TResult Accept(IMaybeVisitor visitor)
19 | {
20 | return visitor.VisitJust(this.value);
21 | }
22 |
23 | public override bool Equals(object obj)
24 | {
25 | var other = obj as Just;
26 | if (other == null)
27 | return base.Equals(obj);
28 |
29 | return object.Equals(this.value, other.value);
30 | }
31 |
32 | public override int GetHashCode()
33 | {
34 | if (this.value == null)
35 | return 0;
36 |
37 | return this.value.GetHashCode();
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Maybe.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public static class Maybe
10 | {
11 | public static bool IsNothing(this IMaybe source)
12 | {
13 | return source.Accept(new IsNothingVisitor());
14 | }
15 |
16 | private class IsNothingVisitor : IMaybeVisitor
17 | {
18 | public bool VisitNothing => true;
19 |
20 | public bool VisitJust(T just)
21 | {
22 | return false;
23 | }
24 | }
25 |
26 | public static bool IsJust(this IMaybe source)
27 | {
28 | return !source.IsNothing();
29 | }
30 |
31 | public static T GetValueOrDefault(this IMaybe source, T defaultValue)
32 | {
33 | return source.Accept(new FromMaybeVisitor(defaultValue));
34 | }
35 |
36 | private class FromMaybeVisitor : IMaybeVisitor
37 | {
38 | private readonly T defaultValue;
39 |
40 | public FromMaybeVisitor(T defaultValue)
41 | {
42 | this.defaultValue = defaultValue;
43 | }
44 |
45 | public T VisitNothing => this.defaultValue;
46 |
47 | public T VisitJust(T just)
48 | {
49 | return just;
50 | }
51 | }
52 |
53 | // Functor
54 | public static IMaybe Select(
55 | this IMaybe source,
56 | Func selector)
57 | {
58 | return source.Accept(new SelectMaybeVisitor(selector));
59 | }
60 |
61 | private class SelectMaybeVisitor :
62 | IMaybeVisitor>
63 | {
64 | private readonly Func selector;
65 |
66 | public SelectMaybeVisitor(Func selector)
67 | {
68 | this.selector = selector;
69 | }
70 |
71 | public IMaybe VisitNothing
72 | {
73 | get { return new Nothing(); }
74 | }
75 |
76 | public IMaybe VisitJust(T just)
77 | {
78 | return new Just(this.selector(just));
79 | }
80 | }
81 |
82 | // Monad
83 | public static IMaybe SelectMany(
84 | this IMaybe source,
85 | Func> selector)
86 | {
87 | return source.Accept(
88 | new SelectManyMaybeVisitor(selector));
89 | }
90 |
91 | private class SelectManyMaybeVisitor :
92 | IMaybeVisitor>
93 | {
94 | private readonly Func> selector;
95 |
96 | public SelectManyMaybeVisitor(Func> selector)
97 | {
98 | this.selector = selector;
99 | }
100 |
101 | public IMaybe VisitNothing
102 | {
103 | get { return new Nothing(); }
104 | }
105 |
106 | public IMaybe VisitJust(T just)
107 | {
108 | return this.selector(just);
109 | }
110 | }
111 |
112 | public static IMaybe SelectMany(
113 | this IMaybe source,
114 | Func> k,
115 | Func s)
116 | {
117 | return source
118 | .SelectMany(x => k(x)
119 | .SelectMany(y => new Just(s(x, y))));
120 | }
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/MaîtreD.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class MaîtreD : IMaîtreD
10 | {
11 | public MaîtreD(int capacity)
12 | {
13 | Capacity = capacity;
14 | }
15 |
16 | public int Capacity { get; }
17 |
18 | public IReservationsProgram> TryAccept(Reservation reservation)
19 | {
20 | return
21 | from isInFuture in ReservationsProgram.IsReservationInFuture(reservation)
22 | from _ in ReservationsProgram.Guard(isInFuture)
23 |
24 | from reservations in ReservationsProgram.ReadReservations(reservation.Date)
25 | let reservedSeats = reservations.Sum(r => r.Quantity)
26 | from __ in ReservationsProgram.Guard(reservedSeats + reservation.Quantity <= Capacity)
27 |
28 | from ___ in ReservationsProgram.Do(() => { reservation.IsAccepted = true; })
29 | from id in ReservationsProgram.Create(reservation)
30 | select id;
31 | }
32 |
33 | public MaîtreD WithCapacity(int newCapacity)
34 | {
35 | return new MaîtreD(newCapacity);
36 | }
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Nothing.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public sealed class Nothing : IMaybe
10 | {
11 | public TResult Accept(IMaybeVisitor visitor)
12 | {
13 | return visitor.VisitNothing;
14 | }
15 |
16 | public override bool Equals(object obj)
17 | {
18 | return obj is Nothing;
19 | }
20 |
21 | public override int GetHashCode()
22 | {
23 | return 0;
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 | using System.Runtime.InteropServices;
4 |
5 | // General Information about an assembly is controlled through the following
6 | // set of attributes. Change these attribute values to modify the information
7 | // associated with an assembly.
8 | [assembly: AssemblyTitle("BookingApi")]
9 | [assembly: AssemblyDescription("")]
10 | [assembly: AssemblyConfiguration("")]
11 | [assembly: AssemblyCompany("")]
12 | [assembly: AssemblyProduct("BookingApi")]
13 | [assembly: AssemblyCopyright("Copyright © 2018")]
14 | [assembly: AssemblyTrademark("")]
15 | [assembly: AssemblyCulture("")]
16 |
17 | // Setting ComVisible to false makes the types in this assembly not visible
18 | // to COM components. If you need to access a type in this assembly from
19 | // COM, set the ComVisible attribute to true on that type.
20 | [assembly: ComVisible(false)]
21 |
22 | // The following GUID is for the ID of the typelib if this project is exposed to COM
23 | [assembly: Guid("1ad71eec-b0f5-4917-a5c5-2e33abbdfb13")]
24 |
25 | // Version information for an assembly consists of the following four values:
26 | //
27 | // Major Version
28 | // Minor Version
29 | // Build Number
30 | // Revision
31 | //
32 | // You can specify all the values or you can default the Build and Revision Numbers
33 | // by using the '*' as shown below:
34 | // [assembly: AssemblyVersion("1.0.*")]
35 | [assembly: AssemblyVersion("1.0.0.0")]
36 | [assembly: AssemblyFileVersion("1.0.0.0")]
37 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Pure.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class Pure : IReservationsProgram
10 | {
11 | private readonly T x;
12 |
13 | public Pure(T x)
14 | {
15 | this.x = x;
16 | }
17 |
18 | public TResult Accept(
19 | IReservationsProgramVisitor visitor)
20 | {
21 | return visitor.VisitPure(this.x);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/ReadReservations.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class ReadReservations : IReservationsInstruction
10 | {
11 | private readonly DateTimeOffset date;
12 | private readonly Func, T> continuation;
13 |
14 | public ReadReservations(
15 | DateTimeOffset date,
16 | Func, T> continuation)
17 | {
18 | this.date = date;
19 | this.continuation = continuation;
20 | }
21 |
22 | public TResult Accept(
23 | IReservationsInstructionVisitor visitor)
24 | {
25 | return visitor.VisitReadReservations(date, continuation);
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Reservation.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public class Reservation
10 | {
11 | public DateTimeOffset Date { get; set; }
12 | public string Email { get; set; }
13 | public string Name { get; set; }
14 | public int Quantity { get; set; }
15 | public bool IsAccepted { get; set; }
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/ReservationsInstruction.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public static class ReservationsInstruction
10 | {
11 | public static IReservationsInstruction Select(
12 | this IReservationsInstruction source,
13 | Func selector)
14 | {
15 | return source.Accept(
16 | new SelectReservationsInstructionVisitor(
17 | selector));
18 | }
19 |
20 | private class SelectReservationsInstructionVisitor :
21 | IReservationsInstructionVisitor>
22 | {
23 | private readonly Func selector;
24 |
25 | public SelectReservationsInstructionVisitor(
26 | Func selector)
27 | {
28 | this.selector = selector;
29 | }
30 |
31 | public IReservationsInstruction VisitIsReservationInFuture(
32 | Reservation reservation,
33 | Func continuation)
34 | {
35 | return new IsReservationInFuture(
36 | reservation,
37 | b => selector(continuation(b)));
38 | }
39 |
40 | public IReservationsInstruction VisitReadReservations(
41 | DateTimeOffset date,
42 | Func, T> continuation)
43 | {
44 | return new ReadReservations(
45 | date,
46 | d => selector(continuation(d)));
47 | }
48 |
49 | public IReservationsInstruction VisitCreate(
50 | Reservation reservation,
51 | Func continuation)
52 | {
53 | return new Create(
54 | reservation,
55 | r => selector(continuation(r)));
56 | }
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/ReservationsMaybe.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public static class ReservationsMaybe
10 | {
11 | public static IReservationsProgram> SelectMany(
12 | this IReservationsProgram> source,
13 | Func>> selector)
14 | {
15 | return source.SelectMany(x => x.Accept(new SelectManyMaybeVisitor(selector)));
16 | }
17 |
18 | private class SelectManyMaybeVisitor :
19 | IMaybeVisitor>>
20 | {
21 | private readonly Func>> selector;
22 |
23 | public SelectManyMaybeVisitor(Func>> selector)
24 | {
25 | this.selector = selector;
26 | }
27 |
28 | public IReservationsProgram> VisitNothing
29 | {
30 | get
31 | {
32 | return new Pure>(new Nothing());
33 | }
34 | }
35 |
36 | public IReservationsProgram> VisitJust(T just)
37 | {
38 | return this.selector(just);
39 | }
40 | }
41 |
42 | public static IReservationsProgram> SelectMany(
43 | this IReservationsProgram> source,
44 | Func>> k,
45 | Func s)
46 | {
47 | return source
48 | .SelectMany(x => k(x)
49 | .SelectMany(y => new Pure>(new Just(s(x, y)))));
50 | }
51 |
52 | public static IReservationsProgram> Select(
53 | this IReservationsProgram> source,
54 | Func selector)
55 | {
56 | return source.SelectMany(x => new Pure>(new Just(selector(x))));
57 | }
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/ReservationsProgram.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Linq;
4 | using System.Text;
5 | using System.Threading.Tasks;
6 |
7 | namespace Ploeh.Samples.BookingApi
8 | {
9 | public static class ReservationsProgram
10 | {
11 | // Functor
12 | public static IReservationsProgram Select(
13 | this IReservationsProgram source,
14 | Func selector)
15 | {
16 | return source.SelectMany(x => new Pure(selector(x)));
17 | }
18 |
19 | // Monad
20 | public static IReservationsProgram SelectMany(
21 | this IReservationsProgram source,
22 | Func> selector)
23 | {
24 | return source.Accept(
25 | new SelectManyReservationsProgramVisitor(
26 | selector));
27 | }
28 |
29 | private class SelectManyReservationsProgramVisitor :
30 | IReservationsProgramVisitor>
31 | {
32 | private readonly Func> selector;
33 |
34 | public SelectManyReservationsProgramVisitor(
35 | Func> selector)
36 | {
37 | this.selector = selector;
38 | }
39 |
40 | public IReservationsProgram VisitFree(
41 | IReservationsInstruction> i)
42 | {
43 | return new Free(i.Select(p => p.SelectMany(selector)));
44 | }
45 |
46 | public IReservationsProgram VisitPure(T x)
47 | {
48 | return selector(x);
49 | }
50 | }
51 |
52 | // Lifts
53 | public static IReservationsProgram> IsReservationInFuture(Reservation reservation)
54 | {
55 | return new Free>(
56 | new IsReservationInFuture>>(
57 | reservation,
58 | x => new Pure>(new Just(x))));
59 | }
60 |
61 | public static IReservationsProgram>> ReadReservations(
62 | DateTimeOffset date)
63 | {
64 | return new Free>>(
65 | new ReadReservations>>>(
66 | date,
67 | x => new Pure>>(new Just>(x))));
68 | }
69 |
70 | public static IReservationsProgram> Create(Reservation reservation)
71 | {
72 | return new Free>(
73 | new Create>>(
74 | reservation,
75 | x => new Pure>(new Just(x))));
76 | }
77 |
78 | public static IReservationsProgram> Guard(bool b)
79 | {
80 | if (b)
81 | return new Pure>(new Just(Unit.Instance));
82 | else
83 | return new Pure>(new Nothing());
84 | }
85 |
86 | public static IReservationsProgram> Do(Action action)
87 | {
88 | action();
89 | return new Pure>(new Just(Unit.Instance));
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/CSharp/BookingApi/Unit.cs:
--------------------------------------------------------------------------------
1 | namespace Ploeh.Samples.BookingApi
2 | {
3 | public class Unit
4 | {
5 | public readonly static Unit Instance = new Unit();
6 |
7 | private Unit() { }
8 | }
9 | }
--------------------------------------------------------------------------------
/CSharp/BookingApi/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/CSharp/Build.fsx:
--------------------------------------------------------------------------------
1 | #r @"packages/FAKE.4.64.4/tools/FakeLib.dll"
2 |
3 | open Fake
4 | open Fake.Testing
5 |
6 | Target "Build" <| fun _ ->
7 | !! "**/BookingApi.sln"
8 | |> MSBuildRelease "" "Rebuild"
9 | |> ignore
10 |
11 | Target "Test" <| fun _ ->
12 | !! "*/bin/Release/Ploeh.Samples.*Tests.dll"
13 | |> xUnit2 (fun p -> { p with Parallel = ParallelMode.All })
14 |
15 | "Build"
16 | ==> "Test"
17 |
18 | RunTargetOrDefault "Test"
19 |
--------------------------------------------------------------------------------
/CSharp/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | packages/FAKE.4.64.4/tools/FAKE.exe Build.fsx
3 |
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.4.0.1/AutoFixture.4.0.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/AutoFixture.4.0.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.dll
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/net452/AutoFixture.pdb
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.dll
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.4.0.1/lib/netstandard1.5/AutoFixture.pdb
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.Xunit2.4.0.1/AutoFixture.Xunit2.4.0.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/AutoFixture.Xunit2.4.0.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.dll
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/net452/AutoFixture.Xunit2.pdb
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.dll
--------------------------------------------------------------------------------
/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/AutoFixture.Xunit2.4.0.1/lib/netstandard1.5/AutoFixture.Xunit2.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/FAKE.4.64.4.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/FAKE.4.64.4.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Argu.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Argu.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Argu.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Argu.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FAKE.FSharp.Compiler.Service.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.FSharp.Compiler.Service.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FAKE.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.exe
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FAKE.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\FAKE\CommandlineParams.fs*src/app/FAKE/CommandlineParams.fs
8 | D:\code\fake\src\app\FAKE\Cli.fs*src/app/FAKE/Cli.fs
9 | D:\code\fake\src\app\FAKE\Program.fs*src/app/FAKE/Program.fs
10 | SRCSRV: end ------------------------------------------------
11 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.optdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.optdata
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.sigdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FSharp.Core.sigdata
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.Lib.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.Deploy.Lib\SshRsaModule.fs*src/app/Fake.Deploy.Lib/SshRsaModule.fs
8 | D:\code\fake\src\app\Fake.Deploy.Lib\Json.fs*src/app/Fake.Deploy.Lib/Json.fs
9 | D:\code\fake\src\app\Fake.Deploy.Lib\HttpHeaderHelper.fs*src/app/Fake.Deploy.Lib/HttpHeaderHelper.fs
10 | D:\code\fake\src\app\Fake.Deploy.Lib\HttpListenerHelper.fs*src/app/Fake.Deploy.Lib/HttpListenerHelper.fs
11 | D:\code\fake\src\app\Fake.Deploy.Lib\FakeDeployAgentHelper.fs*src/app/Fake.Deploy.Lib/FakeDeployAgentHelper.fs
12 | SRCSRV: end ------------------------------------------------
13 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.exe
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Deploy.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.Deploy\AppConfig.fs*src/app/Fake.Deploy/AppConfig.fs
8 | D:\code\fake\src\app\Fake.Deploy\Logger.fs*src/app/Fake.Deploy/Logger.fs
9 | D:\code\fake\src\app\Fake.Deploy\DeploymentHelper.fs*src/app/Fake.Deploy/DeploymentHelper.fs
10 | D:\code\fake\src\app\Fake.Deploy\DeployAgentModule.fs*src/app/Fake.Deploy/DeployAgentModule.fs
11 | D:\code\fake\src\app\Fake.Deploy\DeploymentAgent.fs*src/app/Fake.Deploy/DeploymentAgent.fs
12 | D:\code\fake\src\app\Fake.Deploy\AuthenticatedUser.fs*src/app/Fake.Deploy/AuthenticatedUser.fs
13 | D:\code\fake\src\app\Fake.Deploy\UserMapper.fs*src/app/Fake.Deploy/UserMapper.fs
14 | D:\code\fake\src\app\Fake.Deploy\AuthModule.fs*src/app/Fake.Deploy/AuthModule.fs
15 | D:\code\fake\src\app\Fake.Deploy\JSonSerializers.fs*src/app/Fake.Deploy/JSonSerializers.fs
16 | D:\code\fake\src\app\Fake.Deploy\NancyBootStrapper.fs*src/app/Fake.Deploy/NancyBootStrapper.fs
17 | D:\code\fake\src\app\Fake.Deploy\Services.fs*src/app/Fake.Deploy/Services.fs
18 | D:\code\fake\src\app\Fake.Deploy\Installers.fs*src/app/Fake.Deploy/Installers.fs
19 | D:\code\fake\src\app\Fake.Deploy\Program.fs*src/app/Fake.Deploy/Program.fs
20 | SRCSRV: end ------------------------------------------------
21 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | Fake.Experimental
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Experimental.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.Experimental\ComputationExpressions.fs*src/app/Fake.Experimental/ComputationExpressions.fs
8 | SRCSRV: end ------------------------------------------------
9 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.FluentMigrator.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.FluentMigrator\FluentMigratorHelper.fs*src/app/Fake.FluentMigrator/FluentMigratorHelper.fs
8 | SRCSRV: end ------------------------------------------------
9 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | Fake.Gallio
4 |
5 |
6 |
7 | Test filters (i.e. exclusion rules)
8 |
9 |
10 |
11 |
12 | Sets the format string to use to generate the reports filenames.
13 | Any occurence of {0} will be replaced by the date, and any occurrence of {1} by the time.
14 | The default format string is test-report-{0}-{1}.
15 |
16 |
17 |
18 |
19 | Sets the name of the directory where the reports will be put.
20 | The directory will be created if it doesn't exist. Existing files will be overwritten.
21 | The default report directory is "Reports".
22 |
23 |
24 |
25 |
26 | Gets or sets the version of the .Net runtime to use for running tests.
27 | For the CLR, this must be the name of one of the framework directories in %SystemRoot%\Microsoft.Net\Framework. eg. 'v2.0.50727'.
28 | The default is null which uses the most recent installed and supported framework.
29 |
30 |
31 |
32 |
33 | Attaches the debugger to the test process when set to true.
34 |
35 |
36 |
37 |
38 | Shadow copying allows the original assemblies to be modified while the tests are running.
39 | However, shadow copying may occasionally cause some tests to fail if they depend on their original location.
40 |
41 |
42 |
43 |
44 | Gets or sets the relative or absolute path of the working directory
45 | or null to use a default value selected by the consumer.
46 |
47 |
48 |
49 |
50 | Gets or sets the relative or absolute path of the application base directory,
51 | or null to use a default value selected by the consumer.
52 |
53 |
54 |
55 |
56 | Additional Gallio plugin directories to search recursively.
57 |
58 |
59 |
60 |
61 | The list of directories used for loading referenced assemblies and other dependent resources.
62 |
63 |
64 |
65 |
66 | Specifies the type, assembly, and parameters of custom test runner
67 | extensions to use during the test run.
68 | The value must be in the form '[Namespace.]Type,Assembly[;Parameters]'
69 |
70 |
71 |
72 |
73 | The types supported "out of the box" are: Local, IsolatedAppDomain
74 | and IsolatedProcess (default), but more types could be available as plugins.
75 |
76 |
77 |
78 |
79 | Specifies option property key/value pairs for the test runner.
80 |
81 |
82 |
83 |
84 | Specifies option property key/value pairs for the report formatter
85 |
86 |
87 |
88 |
89 | Sets whether to show generated reports in a window using the default system application
90 | registered to the report file type.
91 |
92 |
93 |
94 |
95 | Sets the maximum amount of time (in seconds) the tests can run
96 | before they are canceled.
97 |
98 |
99 |
100 |
101 | Sets whether to ignore annotations when determining the result code.
102 |
103 |
104 |
105 |
106 | Sets whether to echo results to the screen as tests finish.
107 |
108 |
109 |
110 |
111 | Sets whether to load the tests but not run them.
112 |
113 |
114 |
115 |
116 | Runs tests through Gallio.
117 |
118 | Function that modifies the default parameters
119 | List of test assemblies
120 |
121 |
122 |
123 | Default Gallio parameters
124 |
125 |
126 |
127 |
128 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.Gallio.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.Gallio\GallioHelper.fs*src/app/Fake.Gallio/GallioHelper.fs
8 | SRCSRV: end ------------------------------------------------
9 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | Fake.IIS
4 |
5 |
6 |
7 | Options for using IISExpress
8 |
9 |
10 |
11 |
12 | Opens the given website in the browser
13 |
14 |
15 |
16 |
17 | Opens the given url in the browser
18 |
19 |
20 |
21 |
22 | This task starts the given site in IISExpress with the given ConfigFile.
23 | ## Parameters
24 |
25 | - `setParams` - Function used to overwrite the default parameters.
26 | - `configFileName` - The file name of the IISExpress configfile.
27 | - `siteId` - The id (in the config file) of the website to run.
28 |
29 | ## Sample
30 |
31 | HostWebsite (fun p -> { p with ToolPath = "iisexpress.exe" }) "configfile.config" 1
32 |
33 |
34 |
35 |
36 | Create a IISExpress config file from a given template
37 |
38 |
39 |
40 |
41 | IISExpress default parameters - tries to locate the iisexpress.exe
42 |
43 |
44 |
45 |
46 | Contains tasks to host webprojects in IIS Express.
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.IIS.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.IIS\IISExpress.fs*src/app/Fake.IIS/IISExpress.fs
8 | D:\code\fake\src\app\Fake.IIS\IISHelper.fs*src/app/Fake.IIS/IISHelper.fs
9 | SRCSRV: end ------------------------------------------------
10 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.XML:
--------------------------------------------------------------------------------
1 |
2 |
3 | Fake.SQL
4 |
5 |
6 | Runs all sql scripts from the given directory on the server.
7 | Used to open the connection to the database.
8 | All *.sql files inside this directory and all subdirectories will be run.
9 |
10 |
11 | Runs the given sql scripts on the server.
12 | Used to open the connection to the database.
13 | The scripts which will be run.
14 |
15 |
16 | Drops and creates the database (dropped if db exists. created nonetheless)
17 | Used to open the connection to the database.
18 |
19 |
20 | Replaces the database files from a cache.
21 | If the files in the cache are not up to date, they will be refreshed.
22 | Used to open the connection to the database.
23 | The directory where the attached files will live.
24 | The file cache. If the files in the cache are not up to date, they will be refreshed.
25 | The original database files.
26 | AttachOptions for Sql server.
27 |
28 |
29 |
30 | Replaces the database files
31 |
32 |
33 |
34 |
35 | Replaces the database files
36 |
37 |
38 |
39 |
40 | Closes the connection to the server
41 |
42 |
43 |
44 | Runs a sql script on the server.
45 | Used as a connection to the database.
46 | The script which will be run.
47 |
48 |
49 |
50 | Creates a new db on the given server
51 |
52 |
53 |
54 |
55 | Attach a database
56 |
57 |
58 |
59 |
60 | Detaches a database
61 |
62 |
63 |
64 |
65 | Kills all processes with the given server info
66 |
67 |
68 |
69 |
70 | Drops the given InitialCatalog from the server (if it exists)
71 |
72 |
73 |
74 |
75 | Checks whether the given InitialCatalog exists on the server
76 |
77 |
78 |
79 |
80 | Gets the initial catalog as database instance
81 |
82 |
83 |
84 |
85 | Checks whether the given Database exists on the server
86 |
87 |
88 |
89 |
90 | Gets the name of the server
91 |
92 |
93 |
94 |
95 | Gets the initial catalog name
96 |
97 |
98 |
99 |
100 | gets the DatabaseNames from the server
101 |
102 |
103 |
104 |
105 | gets the DatabaseNames from the server
106 |
107 |
108 |
109 |
110 | Gets a connection to the SQL server and an instance to the ConnectionStringBuilder
111 |
112 |
113 |
114 |
115 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Fake.SQL.pdb.srcsrv:
--------------------------------------------------------------------------------
1 | SRCSRV: ini ------------------------------------------------
2 | VERSION=2
3 | SRCSRV: variables ------------------------------------------
4 | SRCSRVVERCTRL=https
5 | SRCSRVTRG=https://raw.github.com/fsharp/FAKE/438d4b571747e86e0fad73b3cdaa0f481f03cca6/%var2%
6 | SRCSRV: source files ---------------------------------------
7 | D:\code\fake\src\app\Fake.SQL\SQLServer.fs*src/app/Fake.SQL/SQLServer.fs
8 | SRCSRV: end ------------------------------------------------
9 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FakeLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FakeLib.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FakeLib.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FakeLib.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.Runner.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/FluentMigrator.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/HashLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/HashLib.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/ICSharpCode.SharpZipLib.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/ICSharpCode.SharpZipLib.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Build.Utilities.v3.5.resources.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.ConnectionInfo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.ConnectionInfo.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Management.Sdk.Sfc.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Management.Sdk.Sfc.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Smo.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.SqlServer.Smo.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.Administration.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.Administration.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.XmlTransform.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Microsoft.Web.XmlTransform.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Mdb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Mdb.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Pdb.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Pdb.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Rocks.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.Rocks.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Mono.Cecil.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/NLog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/NLog.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Nancy.Authentication.Stateless.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Nancy.Authentication.Stateless
5 |
6 |
7 |
8 |
9 | Nancy stateless authentication implementation
10 |
11 |
12 |
13 |
14 | Enables stateless authentication for the application
15 |
16 | Pipelines to add handlers to (usually "this")
17 | Stateless authentication configuration
18 |
19 |
20 |
21 | Enables stateless authentication for a module
22 |
23 | Module to add handlers to (usually "this")
24 | Stateless authentication configuration
25 |
26 |
27 |
28 | Gets the pre request hook for loading the authenticated user's details
29 | from apikey given in request.
30 |
31 | Stateless authentication configuration to use
32 | Pre request hook delegate
33 |
34 |
35 |
36 | Configuration options for stateless authentication
37 |
38 |
39 |
40 |
41 | Initializes a new instance of the class.
42 |
43 |
44 |
45 |
46 | Gets a value indicating whether the configuration is valid or not.
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Nancy.Hosting.Self.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Hosting.Self.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Nancy.Serialization.JsonNet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.Serialization.JsonNet.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Nancy.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Nancy.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Newtonsoft.Json.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Newtonsoft.Json.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/NuGet.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/NuGet.Core.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/README.markdown:
--------------------------------------------------------------------------------
1 | # FAKE - F# Make
2 |
3 | [](https://gitter.im/fsharp/FAKE?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
4 |
5 | "FAKE - F# Make" is a cross platform build automation system. Due to its integration
6 | in F#, all benefits of the .NET Framework and functional programming can be used, including
7 | the extensive class library, powerful debuggers and integrated development environments like
8 | Visual Studio or MonoDevelop, which provide syntax highlighting and code completion.
9 |
10 | The new DSL was designed to be succinct, typed, declarative, extensible and easy to use.
11 |
12 | See the [project home page](http://fsharp.github.com/FAKE/) for tutorials and [API documentation](http://fsharp.github.io/FAKE/apidocs/index.html).
13 |
14 | # Build the project
15 |
16 | * Mono: Run *build.sh* [](https://travis-ci.org/fsharp/FAKE)
17 | * Windows: Run *build.cmd* [](https://ci.appveyor.com/project/SteffenForkmann/fake)
18 |
19 | [](http://www.issuestats.com/github/fsharp/FAKE) [](http://www.issuestats.com/github/fsharp/FAKE)
20 |
21 | [](https://www.nuget.org/packages/FAKE)
22 |
23 | ## How to contribute code
24 |
25 | See the [contributing page](http://fsharp.github.com/FAKE/contributing.html).
26 |
27 | ## Maintainers
28 |
29 | Although this project is hosted in the [fsharp](https://github.com/fsharp) repository for historical reasons, it is _not_ maintained and managed by the F# Core Engineering Group. The F# Core Engineering Group acknowledges that the independent owner and maintainer of this project is [Steffen Forkmann](http://github.com/forki).
30 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Renci.SshNet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Renci.SshNet.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.FullNetFx.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.Sinks.NLog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Serilog.Sinks.NLog
5 |
6 |
7 |
8 |
9 | Adds the WriteTo.NLog() extension method to .
10 |
11 |
12 |
13 |
14 | Adds a sink that writes adapted log events to NLog.
15 |
16 | The logger configuration.
17 | The minimum log event level required in order to write an event to the sink.
18 | Supplies culture-specific formatting information, or null.
19 | Logger configuration, allowing configuration to continue.
20 | A required parameter is null.
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/Serilog.pdb:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/Serilog.pdb
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.Rules.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.Rules.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.CSharp.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/StyleCop.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/StyleCop.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Buffers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Buffers.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Diagnostics.DiagnosticSource.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Diagnostics.DiagnosticSource.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Extensions.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Net.Http.Primitives.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | System.Net.Http.Primitives
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Runtime.InteropServices.RuntimeInformation.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Runtime.InteropServices.RuntimeInformation.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/System.ValueTuple.dll
--------------------------------------------------------------------------------
/CSharp/packages/FAKE.4.64.4/tools/VSFile.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/FAKE.4.64.4/tools/VSFile.dll
--------------------------------------------------------------------------------
/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/System.Threading.Tasks.Extensions.4.3.0.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/System.Threading.Tasks.Extensions.4.3.0.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/ThirdPartyNotices.txt:
--------------------------------------------------------------------------------
1 | This Microsoft .NET Library may incorporate components from the projects listed
2 | below. Microsoft licenses these components under the Microsoft .NET Library
3 | software license terms. The original copyright notices and the licenses under
4 | which Microsoft received such components are set forth below for informational
5 | purposes only. Microsoft reserves all rights not expressly granted herein,
6 | whether by implication, estoppel or otherwise.
7 |
8 | 1. .NET Core (https://github.com/dotnet/core/)
9 |
10 | .NET Core
11 | Copyright (c) .NET Foundation and Contributors
12 |
13 | The MIT License (MIT)
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy
16 | of this software and associated documentation files (the "Software"), to deal
17 | in the Software without restriction, including without limitation the rights
18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 | copies of the Software, and to permit persons to whom the Software is
20 | furnished to do so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
--------------------------------------------------------------------------------
/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/netstandard1.0/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/netstandard1.0/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.Threading.Tasks.Extensions.4.3.0/lib/portable-net45+win8+wp8+wpa81/System.Threading.Tasks.Extensions.dll
--------------------------------------------------------------------------------
/CSharp/packages/System.ValueTuple.4.3.0/System.ValueTuple.4.3.0.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/System.ValueTuple.4.3.0.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/System.ValueTuple.4.3.0/ThirdPartyNotices.txt:
--------------------------------------------------------------------------------
1 | This Microsoft .NET Library may incorporate components from the projects listed
2 | below. Microsoft licenses these components under the Microsoft .NET Library
3 | software license terms. The original copyright notices and the licenses under
4 | which Microsoft received such components are set forth below for informational
5 | purposes only. Microsoft reserves all rights not expressly granted herein,
6 | whether by implication, estoppel or otherwise.
7 |
8 | 1. .NET Core (https://github.com/dotnet/core/)
9 |
10 | .NET Core
11 | Copyright (c) .NET Foundation and Contributors
12 |
13 | The MIT License (MIT)
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy
16 | of this software and associated documentation files (the "Software"), to deal
17 | in the Software without restriction, including without limitation the rights
18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 | copies of the Software, and to permit persons to whom the Software is
20 | furnished to do so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
--------------------------------------------------------------------------------
/CSharp/packages/System.ValueTuple.4.3.0/lib/netstandard1.0/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/lib/netstandard1.0/System.ValueTuple.dll
--------------------------------------------------------------------------------
/CSharp/packages/System.ValueTuple.4.3.0/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/System.ValueTuple.4.3.0/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.2.3.1/xunit.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.2.3.1/xunit.2.3.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.analyzers.0.7.0/analyzers/dotnet/cs/xunit.analyzers.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.analyzers.0.7.0/analyzers/dotnet/cs/xunit.analyzers.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.analyzers.0.7.0/tools/install.ps1:
--------------------------------------------------------------------------------
1 | param($installPath, $toolsPath, $package, $project)
2 |
3 | if($project.Object.SupportsPackageDependencyResolution)
4 | {
5 | if($project.Object.SupportsPackageDependencyResolution())
6 | {
7 | # Do not install analyzers via install.ps1, instead let the project system handle it.
8 | return
9 | }
10 | }
11 |
12 | $analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve
13 |
14 | foreach($analyzersPath in $analyzersPaths)
15 | {
16 | if (Test-Path $analyzersPath)
17 | {
18 | # Install the language agnostic analyzers.
19 | foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll)
20 | {
21 | if($project.Object.AnalyzerReferences)
22 | {
23 | $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
24 | }
25 | }
26 | }
27 | }
28 |
29 | # $project.Type gives the language name like (C# or VB.NET)
30 | $languageFolder = ""
31 | if($project.Type -eq "C#")
32 | {
33 | $languageFolder = "cs"
34 | }
35 | if($project.Type -eq "VB.NET")
36 | {
37 | $languageFolder = "vb"
38 | }
39 | if($languageFolder -eq "")
40 | {
41 | return
42 | }
43 |
44 | foreach($analyzersPath in $analyzersPaths)
45 | {
46 | # Install language specific analyzers.
47 | $languageAnalyzersPath = join-path $analyzersPath $languageFolder
48 | if (Test-Path $languageAnalyzersPath)
49 | {
50 | foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll)
51 | {
52 | if($project.Object.AnalyzerReferences)
53 | {
54 | $project.Object.AnalyzerReferences.Add($analyzerFilePath.FullName)
55 | }
56 | }
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.analyzers.0.7.0/tools/uninstall.ps1:
--------------------------------------------------------------------------------
1 | param($installPath, $toolsPath, $package, $project)
2 |
3 | if($project.Object.SupportsPackageDependencyResolution)
4 | {
5 | if($project.Object.SupportsPackageDependencyResolution())
6 | {
7 | # Do not uninstall analyzers via uninstall.ps1, instead let the project system handle it.
8 | return
9 | }
10 | }
11 |
12 | $analyzersPaths = Join-Path (Join-Path (Split-Path -Path $toolsPath -Parent) "analyzers") * -Resolve
13 |
14 | foreach($analyzersPath in $analyzersPaths)
15 | {
16 | # Uninstall the language agnostic analyzers.
17 | if (Test-Path $analyzersPath)
18 | {
19 | foreach ($analyzerFilePath in Get-ChildItem -Path "$analyzersPath\*.dll" -Exclude *.resources.dll)
20 | {
21 | if($project.Object.AnalyzerReferences)
22 | {
23 | $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)
24 | }
25 | }
26 | }
27 | }
28 |
29 | # $project.Type gives the language name like (C# or VB.NET)
30 | $languageFolder = ""
31 | if($project.Type -eq "C#")
32 | {
33 | $languageFolder = "cs"
34 | }
35 | if($project.Type -eq "VB.NET")
36 | {
37 | $languageFolder = "vb"
38 | }
39 | if($languageFolder -eq "")
40 | {
41 | return
42 | }
43 |
44 | foreach($analyzersPath in $analyzersPaths)
45 | {
46 | # Uninstall language specific analyzers.
47 | $languageAnalyzersPath = join-path $analyzersPath $languageFolder
48 | if (Test-Path $languageAnalyzersPath)
49 | {
50 | foreach ($analyzerFilePath in Get-ChildItem -Path "$languageAnalyzersPath\*.dll" -Exclude *.resources.dll)
51 | {
52 | if($project.Object.AnalyzerReferences)
53 | {
54 | try
55 | {
56 | $project.Object.AnalyzerReferences.Remove($analyzerFilePath.FullName)
57 | }
58 | catch
59 | {
60 |
61 | }
62 | }
63 | }
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.analyzers.0.7.0/xunit.analyzers.0.7.0.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.analyzers.0.7.0/xunit.analyzers.0.7.0.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.assert.2.3.1/lib/netstandard1.1/xunit.assert.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.assert.2.3.1/lib/netstandard1.1/xunit.assert.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.assert.2.3.1/xunit.assert.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.assert.2.3.1/xunit.assert.2.3.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/build/xunit.core.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | true
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/build/xunit.core.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 | full
8 | true
9 |
10 |
11 |
12 |
13 | portable
14 | true
15 | true
16 |
17 |
18 |
19 |
20 | full
21 |
22 |
23 |
24 | xunit.execution.desktop.dll
25 | PreserveNewest
26 | False
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | true
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 | full
8 | true
9 |
10 |
11 |
12 |
13 | portable
14 | true
15 | true
16 |
17 |
18 |
19 |
20 | full
21 |
22 |
23 |
24 | xunit.execution.desktop.dll
25 | PreserveNewest
26 | False
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll.tdnet:
--------------------------------------------------------------------------------
1 |
2 | xUnit.net {0}.{1}.{2} build {3}
3 | xunit.runner.tdnet.dll
4 | Xunit.Runner.TdNet.TdNetRunner
5 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/build/xunit.runner.console.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(MSBuildThisFileDirectory)..\tools\net452\xunit.console.exe
5 | $(MSBuildThisFileDirectory)..\tools\net452\xunit.console.x86.exe
6 | $(MSBuildThisFileDirectory)..\tools\netcoreapp1.0\xunit.console.dll
7 | $(MSBuildThisFileDirectory)..\tools\netcoreapp2.0\xunit.console.dll
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.abstractions.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.console.x86.exe.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.reporters.net452.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.reporters.net452.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.utility.net452.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/net452/xunit.runner.utility.net452.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.abstractions.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.deps.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeTarget": {
3 | "name": ".NETCoreApp,Version=v1.0",
4 | "signature": "93edd53712b3569addd1cfe9d1010ed90a13b8ee"
5 | },
6 | "compilationOptions": {},
7 | "targets": {
8 | ".NETCoreApp,Version=v1.0": {
9 | "xunit.console/99.99.99-dev": {
10 | "dependencies": {
11 | "xunit.runner.reporters": "99.99.99-dev"
12 | },
13 | "runtime": {
14 | "xunit.console.dll": {}
15 | }
16 | },
17 | "xunit.abstractions/2.0.1": {
18 | "runtime": {
19 | "lib/netstandard1.0/xunit.abstractions.dll": {}
20 | }
21 | },
22 | "xunit.runner.reporters/99.99.99-dev": {
23 | "dependencies": {
24 | "xunit.runner.utility": "99.99.99-dev"
25 | },
26 | "runtime": {
27 | "xunit.runner.reporters.netcoreapp10.dll": {}
28 | }
29 | },
30 | "xunit.runner.utility/99.99.99-dev": {
31 | "dependencies": {
32 | "xunit.abstractions": "2.0.1"
33 | },
34 | "runtime": {
35 | "xunit.runner.utility.netcoreapp10.dll": {}
36 | }
37 | }
38 | }
39 | },
40 | "libraries": {
41 | "xunit.console/99.99.99-dev": {
42 | "type": "project",
43 | "serviceable": false,
44 | "sha512": ""
45 | },
46 | "xunit.abstractions/2.0.1": {
47 | "type": "package",
48 | "serviceable": true,
49 | "sha512": "sha512-bDm/zdG5rnRDsobKuKwrvL4HccBdC0uvT12be6fG12P3d1U7u9Wkvfoq/PM2GeyIeb0Dtcmm/7k2oaawiqQ2Dg==",
50 | "path": "xunit.abstractions/2.0.1",
51 | "hashPath": "xunit.abstractions.2.0.1.nupkg.sha512"
52 | },
53 | "xunit.runner.reporters/99.99.99-dev": {
54 | "type": "project",
55 | "serviceable": false,
56 | "sha512": ""
57 | },
58 | "xunit.runner.utility/99.99.99-dev": {
59 | "type": "project",
60 | "serviceable": false,
61 | "sha512": ""
62 | }
63 | }
64 | }
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.dll.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.console.runtimeconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeOptions": {
3 | "tfm": "netcoreapp1.0",
4 | "framework": {
5 | "name": "Microsoft.NETCore.App",
6 | "version": "1.0.0"
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.reporters.netcoreapp10.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.reporters.netcoreapp10.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.utility.netcoreapp10.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp1.0/xunit.runner.utility.netcoreapp10.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.abstractions.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.dll.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.console.runtimeconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "runtimeOptions": {
3 | "tfm": "netcoreapp2.0",
4 | "framework": {
5 | "name": "Microsoft.NETCore.App",
6 | "version": "2.0.0"
7 | }
8 | }
9 | }
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.reporters.netcoreapp10.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.reporters.netcoreapp10.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.utility.netcoreapp10.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/tools/netcoreapp2.0/xunit.runner.utility.netcoreapp10.dll
--------------------------------------------------------------------------------
/CSharp/packages/xunit.runner.console.2.3.1/xunit.runner.console.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/CSharp/packages/xunit.runner.console.2.3.1/xunit.runner.console.2.3.1.nupkg
--------------------------------------------------------------------------------
/FSharp/.gitignore:
--------------------------------------------------------------------------------
1 | # Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2 | [Bb]in/
3 | [Oo]bj/
4 |
5 | # MsTest test results
6 | TestResults
7 |
8 | ## Ignore Visual Studio temporary files, build results, and
9 | ## files generated by popular Visual Studio add-ons.
10 |
11 | # User-specific files
12 | *.suo
13 | *.user
14 | *.sln.docstates
15 |
16 | # Build results
17 | [Dd]ebug/
18 | [Rr]elease/
19 | x64/
20 | *_i.c
21 | *_p.c
22 | *.ilk
23 | *.meta
24 | *.obj
25 | *.pch
26 | *.pgc
27 | *.pgd
28 | *.rsp
29 | *.sbr
30 | *.tlb
31 | *.tli
32 | *.tlh
33 | *.tmp
34 | *.log
35 | *.vspscc
36 | *.vssscc
37 | .builds
38 |
39 | # Visual C++ cache files
40 | ipch/
41 | *.aps
42 | *.ncb
43 | *.opensdf
44 | *.sdf
45 |
46 | # Visual Studio profiler
47 | *.psess
48 | *.vsp
49 | *.vspx
50 |
51 | # Guidance Automation Toolkit
52 | *.gpState
53 |
54 | # ReSharper is a .NET coding add-in
55 | _ReSharper*
56 |
57 | # NCrunch
58 | *.ncrunch*
59 | .*crunch*.local.xml
60 |
61 | # Installshield output folder
62 | [Ee]xpress
63 |
64 | # DocProject is a documentation generator add-in
65 | DocProject/buildhelp/
66 | DocProject/Help/*.HxT
67 | DocProject/Help/*.HxC
68 | DocProject/Help/*.hhc
69 | DocProject/Help/*.hhk
70 | DocProject/Help/*.hhp
71 | DocProject/Help/Html2
72 | DocProject/Help/html
73 |
74 | # Click-Once directory
75 | publish
76 |
77 | # Publish Web Output
78 | *.Publish.xml
79 |
80 | # Windows Azure Build Output
81 | csx
82 | *.build.csdef
83 |
84 | # Windows Store app package directory
85 | AppPackages/
86 |
87 | # Backup & report files from converting an old project file to a newer
88 | # Visual Studio version. Backup files are not needed, because we have git ;-)
89 | _Upgr/
90 | Backup*/
91 | UpgradeLog*.XML
92 |
93 | # FAKE hidden directory
94 | .fake/
95 |
--------------------------------------------------------------------------------
/FSharp/BookingApi.UnitTests/AssemblyInfo.fs:
--------------------------------------------------------------------------------
1 | namespace BookingApi.UnitTests.AssemblyInfo
2 |
3 | open System.Reflection
4 | open System.Runtime.CompilerServices
5 | open System.Runtime.InteropServices
6 |
7 | // General Information about an assembly is controlled through the following
8 | // set of attributes. Change these attribute values to modify the information
9 | // associated with an assembly.
10 | []
11 | []
12 | []
13 | []
14 | []
15 | []
16 | []
17 | []
18 |
19 | // Setting ComVisible to false makes the types in this assembly not visible
20 | // to COM components. If you need to access a type in this assembly from
21 | // COM, set the ComVisible attribute to true on that type.
22 | []
23 |
24 | // The following GUID is for the ID of the typelib if this project is exposed to COM
25 | []
26 |
27 | // Version information for an assembly consists of the following four values:
28 | //
29 | // Major Version
30 | // Minor Version
31 | // Build Number
32 | // Revision
33 | //
34 | // You can specify all the values or you can default the Build and Revision Numbers
35 | // by using the '*' as shown below:
36 | // []
37 | []
38 | []
39 |
40 | do
41 | ()
--------------------------------------------------------------------------------
/FSharp/BookingApi.UnitTests/Gen.fs:
--------------------------------------------------------------------------------
1 | module Ploeh.Samples.BookingApi.UnitTests.Gen
2 |
3 | open System
4 | open Hedgehog
5 | open Ploeh.Samples.BookingApi.Reservations
6 |
7 | let reservation = gen {
8 | let! ticks =
9 | Range.linear DateTime.MinValue.Ticks DateTime.MaxValue.Ticks
10 | |> Gen.int64
11 | let! offset = Range.linear -12 12 |> Gen.int |> Gen.map float
12 | let d = new DateTimeOffset (ticks, TimeSpan.FromHours offset)
13 |
14 | let! name = Gen.alphaNum |> Gen.string (Range.linear 1 50)
15 | let! email = Gen.alphaNum |> Gen.string (Range.linear 1 50)
16 | let! quantity = Range.linear 1 100 |> Gen.int
17 | let! isAccepted = Gen.bool
18 |
19 | return {
20 | Date = d;
21 | Name = name;
22 | Email = email;
23 | Quantity = quantity;
24 | IsAccepted = isAccepted } }
25 |
26 |
--------------------------------------------------------------------------------
/FSharp/BookingApi.UnitTests/Tests.fs:
--------------------------------------------------------------------------------
1 | module Ploeh.Samples.BookingApi.UnitTests.Tests
2 |
3 | open System
4 | open Xunit
5 | open Hedgehog
6 | open Swensen.Unquote
7 | open Ploeh.Samples.BookingApi
8 | open Reservations
9 | open Booking
10 | open Ploeh.Samples.BookingApi.UnitTests
11 |
12 | []
13 | let ``tryAccept reservation in the past`` () = Property.check <| property {
14 | let! capacity = Range.linear 0 Int32.MaxValue |> Gen.int
15 | let! reservation = Gen.reservation
16 | let stub = function
17 | | IsReservationInFuture (_, next) -> next false
18 | | ReadReservations (_, next) -> next []
19 | | Create (_, next) -> next 0
20 |
21 | let actual = tryAccept capacity reservation |> iter stub
22 |
23 | test <@ Option.isNone actual @> }
24 |
25 | []
26 | let ``tryAccept reservation when capacity is insufficient`` () = Property.check <| property {
27 | let! i = Range.linear 0 Int32.MaxValue |> Gen.int
28 | let! reservations = Gen.reservation |> Gen.list (Range.linear 0 100)
29 | let! reservation = Gen.reservation
30 | let stub = function
31 | | IsReservationInFuture (_, next) -> next true
32 | | ReadReservations (_, next) -> next reservations
33 | | Create (_, next) -> next 0
34 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations
35 | let capacity = reservedSeats + reservation.Quantity - i
36 |
37 | let actual = tryAccept capacity reservation |> iter stub
38 |
39 | test <@ Option.isNone actual @> }
40 |
41 | []
42 | let ``tryAccept happy path`` () = Property.check <| property {
43 | let! i = Range.linear 1 Int32.MaxValue |> Gen.int
44 | let! reservations = Gen.reservation |> Gen.list (Range.linear 0 100)
45 | let! reservation = Gen.reservation
46 | let! expected = Range.linearBounded () |> Gen.int
47 | let stub = function
48 | | IsReservationInFuture (_, next) -> next true
49 | | ReadReservations (_, next) -> next reservations
50 | | Create (r, next) -> test <@ r.IsAccepted @>; next expected
51 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations
52 | let capacity = reservedSeats + reservation.Quantity + i
53 |
54 | let actual = tryAccept capacity reservation |> iter stub
55 |
56 | Some expected =! actual }
--------------------------------------------------------------------------------
/FSharp/BookingApi.UnitTests/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/FSharp/BookingApi.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 15
4 | VisualStudioVersion = 15.0.27130.2026
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BookingApi", "BookingApi\BookingApi.fsproj", "{751AB11C-EBEB-487E-AA79-7F05E71577D1}"
7 | EndProject
8 | Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "BookingApi.UnitTests", "BookingApi.UnitTests\BookingApi.UnitTests.fsproj", "{8054B054-EA57-4234-BBC6-89302025408C}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Release|Any CPU = Release|Any CPU
14 | EndGlobalSection
15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
16 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
17 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
18 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
19 | {751AB11C-EBEB-487E-AA79-7F05E71577D1}.Release|Any CPU.Build.0 = Release|Any CPU
20 | {8054B054-EA57-4234-BBC6-89302025408C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {8054B054-EA57-4234-BBC6-89302025408C}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {8054B054-EA57-4234-BBC6-89302025408C}.Release|Any CPU.ActiveCfg = Release|Any CPU
23 | {8054B054-EA57-4234-BBC6-89302025408C}.Release|Any CPU.Build.0 = Release|Any CPU
24 | EndGlobalSection
25 | GlobalSection(SolutionProperties) = preSolution
26 | HideSolutionNode = FALSE
27 | EndGlobalSection
28 | GlobalSection(ExtensibilityGlobals) = postSolution
29 | SolutionGuid = {6CEA0EF1-D211-4D31-BBF5-685EA7E0C34F}
30 | EndGlobalSection
31 | EndGlobal
32 |
--------------------------------------------------------------------------------
/FSharp/BookingApi/AssemblyInfo.fs:
--------------------------------------------------------------------------------
1 | namespace BookingApi.AssemblyInfo
2 |
3 | open System.Reflection
4 | open System.Runtime.CompilerServices
5 | open System.Runtime.InteropServices
6 |
7 | // General Information about an assembly is controlled through the following
8 | // set of attributes. Change these attribute values to modify the information
9 | // associated with an assembly.
10 | []
11 | []
12 | []
13 | []
14 | []
15 | []
16 | []
17 | []
18 |
19 | // Setting ComVisible to false makes the types in this assembly not visible
20 | // to COM components. If you need to access a type in this assembly from
21 | // COM, set the ComVisible attribute to true on that type.
22 | []
23 |
24 | // The following GUID is for the ID of the typelib if this project is exposed to COM
25 | []
26 |
27 | // Version information for an assembly consists of the following four values:
28 | //
29 | // Major Version
30 | // Minor Version
31 | // Build Number
32 | // Revision
33 | //
34 | // You can specify all the values or you can default the Build and Revision Numbers
35 | // by using the '*' as shown below:
36 | // []
37 | []
38 | []
39 |
40 | do
41 | ()
--------------------------------------------------------------------------------
/FSharp/BookingApi/Booking.fs:
--------------------------------------------------------------------------------
1 | module Ploeh.Samples.BookingApi.Booking
2 |
3 | open Ploeh.Samples.BookingApi
4 | open Reservations
5 | open ReservationsOption
6 |
7 | let isReservationInFuture r = Free (IsReservationInFuture (r, Some >> Pure))
8 |
9 | let readReservations d = Free (ReadReservations (d, Some >> Pure))
10 |
11 | let create r = Free (Create (r, Some >> Pure))
12 |
13 | // bool -> ReservationsProgram
14 | let guard = function
15 | | true -> Pure (Some ())
16 | | false -> Pure None
17 |
18 | // int -> Reservation -> ReservationsProgram
19 | let tryAccept capacity reservation = reservationsOption {
20 | do! ReservationsOption.bind guard <| isReservationInFuture reservation
21 |
22 | let! reservations = readReservations reservation.Date
23 | let reservedSeats = List.sumBy (fun r -> r.Quantity) reservations
24 | do! guard (reservedSeats + reservation.Quantity <= capacity)
25 |
26 | return! create { reservation with IsAccepted = true } }
27 |
--------------------------------------------------------------------------------
/FSharp/BookingApi/BookingApi.fsproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Debug
6 | AnyCPU
7 | 2.0
8 | 751ab11c-ebeb-487e-aa79-7f05e71577d1
9 | Library
10 | BookingApi
11 | Ploeh.Samples.BookingApi
12 | true
13 | v4.6.1
14 | 4.4.1.0
15 | true
16 | BookingApi
17 |
18 |
19 |
20 |
21 | true
22 | full
23 | false
24 | false
25 | bin\$(Configuration)\
26 | DEBUG;TRACE
27 | 3
28 | bin\$(Configuration)\$(AssemblyName).XML
29 |
30 |
31 | pdbonly
32 | true
33 | true
34 | bin\$(Configuration)\
35 | TRACE
36 | 3
37 | bin\$(Configuration)\$(AssemblyName).XML
38 |
39 |
40 | 11
41 |
42 |
43 |
44 |
45 | $(MSBuildExtensionsPath32)\..\Microsoft SDKs\F#\3.0\Framework\v4.0\Microsoft.FSharp.Targets
46 |
47 |
48 |
49 |
50 | $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Targets
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | FSharp.Core
66 | FSharp.Core.dll
67 | $(MSBuildProgramFiles32)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\$(TargetFSharpCoreVersion)\FSharp.Core.dll
68 |
69 |
70 |
71 |
72 |
73 | ..\packages\System.ValueTuple.4.3.1\lib\netstandard1.0\System.ValueTuple.dll
74 | True
75 |
76 |
77 |
84 |
--------------------------------------------------------------------------------
/FSharp/BookingApi/Reservations.fs:
--------------------------------------------------------------------------------
1 | module Ploeh.Samples.BookingApi.Reservations
2 |
3 | open System
4 |
5 | type Reservation = {
6 | Date : DateTimeOffset;
7 | Email : string;
8 | Name : string;
9 | Quantity : int;
10 | IsAccepted : bool }
11 |
12 | type ReservationsInstruction<'a> =
13 | | IsReservationInFuture of (Reservation * (bool -> 'a))
14 | | ReadReservations of (DateTimeOffset * (Reservation list -> 'a))
15 | | Create of (Reservation * (int -> 'a))
16 |
17 | let private mapI f = function
18 | | IsReservationInFuture (x, next) -> IsReservationInFuture (x, next >> f)
19 | | ReadReservations (x, next) -> ReadReservations (x, next >> f)
20 | | Create (x, next) -> Create (x, next >> f)
21 |
22 | type ReservationsProgram<'a> =
23 | | Free of ReservationsInstruction>
24 | | Pure of 'a
25 |
26 | let rec bind f = function
27 | | Free x -> x |> mapI (bind f) |> Free
28 | | Pure x -> f x
29 |
30 | type ReservationsBuilder () =
31 | member this.Bind (x, f) = bind f x
32 | member this.Return x = Pure x
33 | member this.ReturnFrom x = x
34 | member this.Zero () = Pure ()
35 |
36 | let reservations = ReservationsBuilder ()
37 |
38 | let rec iter f = function
39 | | Pure x -> x
40 | | Free p -> f p |> iter f
41 |
--------------------------------------------------------------------------------
/FSharp/BookingApi/ReservationsOption.fs:
--------------------------------------------------------------------------------
1 | module Ploeh.Samples.BookingApi.ReservationsOption
2 |
3 | open Ploeh.Samples.BookingApi.Reservations
4 |
5 | // ('a -> ReservationsProgram<'b option>) -> ReservationsProgram<'a option> ->
6 | // ReservationsProgram<'b option>
7 | let bind f x = reservations {
8 | let! x' = x
9 | match x' with
10 | | Some x'' -> return! f x''
11 | | None -> return None }
12 |
13 | type ReservationsOptionBuilder () =
14 | member this.Bind (x, f) = bind f x
15 | member this.Return x = Pure (Some x)
16 | member this.ReturnFrom x = x
17 | member this.Zero () = Pure (Some ())
18 |
19 | let reservationsOption = ReservationsOptionBuilder ()
20 |
--------------------------------------------------------------------------------
/FSharp/BookingApi/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/FSharp.Core.4.3.4.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/FSharp.Core.4.3.4.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.optdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.optdata
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.sigdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/FSharp.Core.sigdata
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/cs/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/cs/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/de/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/de/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/en/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/en/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/es/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/es/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/fr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/fr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/it/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/it/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ja/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ja/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ko/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ko/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pl/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pl/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pt-BR/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/pt-BR/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ru/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/ru/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/tr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/tr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hans/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hans/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hant/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/UnitTests/MockTypeProviders/zh-Hant/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/cs/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/cs/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/de/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/de/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/en/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/en/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/es/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/es/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/fr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/fr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/it/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/it/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ja/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ja/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ko/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ko/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pl/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pl/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pt-BR/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/pt-BR/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ru/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/ru/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/tr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/tr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hans/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hans/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hant/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/net45/zh-Hant/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.optdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.optdata
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.sigdata:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/FSharp.Core.sigdata
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/cs/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/cs/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/de/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/de/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/en/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/en/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/es/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/es/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/fr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/fr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/it/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/it/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ja/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ja/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ko/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ko/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pl/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pl/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pt-BR/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/pt-BR/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ru/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/ru/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/tr/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/tr/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hans/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hans/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hant/FSharp.Core.resources.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/FSharp.Core.4.3.4/lib/netstandard1.6/zh-Hant/FSharp.Core.resources.dll
--------------------------------------------------------------------------------
/FSharp/packages/Hedgehog.0.7.0.0/Hedgehog.0.7.0.0.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Hedgehog.0.7.0.0/Hedgehog.0.7.0.0.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/Hedgehog.0.7.0.0/lib/netstandard1.6/Hedgehog.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Hedgehog.0.7.0.0/lib/netstandard1.6/Hedgehog.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/System.Collections.Specialized.4.0.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/System.Collections.Specialized.4.0.1.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ThirdPartyNotices.txt:
--------------------------------------------------------------------------------
1 | This Microsoft .NET Library may incorporate components from the projects listed
2 | below. Microsoft licenses these components under the Microsoft .NET Library
3 | software license terms. The original copyright notices and the licenses under
4 | which Microsoft received such components are set forth below for informational
5 | purposes only. Microsoft reserves all rights not expressly granted herein,
6 | whether by implication, estoppel or otherwise.
7 |
8 | 1. .NET Core (https://github.com/dotnet/core/)
9 |
10 | .NET Core
11 | Copyright (c) .NET Foundation and Contributors
12 |
13 | The MIT License (MIT)
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy
16 | of this software and associated documentation files (the "Software"), to deal
17 | in the Software without restriction, including without limitation the rights
18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 | copies of the Software, and to permit persons to whom the Software is
20 | furnished to do so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoAndroid10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoAndroid10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoTouch10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/MonoTouch10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/net46/System.Collections.Specialized.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/net46/System.Collections.Specialized.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/netstandard1.3/System.Collections.Specialized.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/netstandard1.3/System.Collections.Specialized.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinios10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinios10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinmac20/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinmac20/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarintvos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarintvos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinwatchos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/lib/xamarinwatchos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoAndroid10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoAndroid10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoTouch10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/MonoTouch10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/net46/System.Collections.Specialized.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/net46/System.Collections.Specialized.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/netstandard1.3/System.Collections.Specialized.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/netstandard1.3/System.Collections.Specialized.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinios10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinios10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinmac20/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinmac20/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarintvos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarintvos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinwatchos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.Collections.Specialized.4.0.1/ref/xamarinwatchos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/System.ValueTuple.4.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/System.ValueTuple.4.3.1.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ThirdPartyNotices.txt:
--------------------------------------------------------------------------------
1 | This Microsoft .NET Library may incorporate components from the projects listed
2 | below. Microsoft licenses these components under the Microsoft .NET Library
3 | software license terms. The original copyright notices and the licenses under
4 | which Microsoft received such components are set forth below for informational
5 | purposes only. Microsoft reserves all rights not expressly granted herein,
6 | whether by implication, estoppel or otherwise.
7 |
8 | 1. .NET Core (https://github.com/dotnet/core/)
9 |
10 | .NET Core
11 | Copyright (c) .NET Foundation and Contributors
12 |
13 | The MIT License (MIT)
14 |
15 | Permission is hereby granted, free of charge, to any person obtaining a copy
16 | of this software and associated documentation files (the "Software"), to deal
17 | in the Software without restriction, including without limitation the rights
18 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
19 | copies of the Software, and to permit persons to whom the Software is
20 | furnished to do so, subject to the following conditions:
21 |
22 | The above copyright notice and this permission notice shall be included in all
23 | copies or substantial portions of the Software.
24 |
25 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
26 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
27 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
28 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
29 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
30 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
31 | SOFTWARE.
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoAndroid10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoAndroid10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoTouch10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/MonoTouch10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/netstandard1.0/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/netstandard1.0/System.ValueTuple.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinios10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinios10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinmac20/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinmac20/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarintvos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarintvos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinwatchos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/lib/xamarinwatchos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoAndroid10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoAndroid10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoTouch10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/MonoTouch10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinios10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinios10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinmac20/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinmac20/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarintvos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarintvos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinwatchos10/_._:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/System.ValueTuple.4.3.1/ref/xamarinwatchos10/_._
--------------------------------------------------------------------------------
/FSharp/packages/Unquote.4.0.0/Unquote.4.0.0.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/Unquote.4.0.0.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/Unquote.4.0.0/lib/net45/Unquote.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/lib/net45/Unquote.dll
--------------------------------------------------------------------------------
/FSharp/packages/Unquote.4.0.0/lib/netstandard2.0/Unquote.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/Unquote.4.0.0/lib/netstandard2.0/Unquote.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/lib/net35/xunit.abstractions.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/lib/netstandard1.0/xunit.abstractions.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.abstractions.2.0.1/xunit.abstractions.2.0.1.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/build/xunit.core.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | true
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/build/xunit.core.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 | full
8 | true
9 |
10 |
11 |
12 |
13 | portable
14 | true
15 | true
16 |
17 |
18 |
19 |
20 | full
21 |
22 |
23 |
24 | xunit.execution.desktop.dll
25 | PreserveNewest
26 | False
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.core.2.3.1/build/xunit.execution.desktop.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | true
10 | true
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/buildMultiTargeting/xunit.core.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | true
7 | full
8 | true
9 |
10 |
11 |
12 |
13 | portable
14 | true
15 | true
16 |
17 |
18 |
19 |
20 | full
21 |
22 |
23 |
24 | xunit.execution.desktop.dll
25 | PreserveNewest
26 | False
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/FSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.core.2.3.1/xunit.core.2.3.1.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.core.dll.tdnet:
--------------------------------------------------------------------------------
1 |
2 | xUnit.net {0}.{1}.{2} build {3}
3 | xunit.runner.tdnet.dll
4 | Xunit.Runner.TdNet.TdNetRunner
5 |
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.tdnet.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/lib/netstandard1.1/xunit.runner.utility.net452.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.core.2.3.1/xunit.extensibility.core.2.3.1.nupkg
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/net452/xunit.execution.desktop.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/lib/netstandard1.1/xunit.execution.dotnet.dll
--------------------------------------------------------------------------------
/FSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ploeh/dependency-injection-revisited/3e331f81f66f10cc508d20ee23b58988e36adabd/FSharp/packages/xunit.extensibility.execution.2.3.1/xunit.extensibility.execution.2.3.1.nupkg
--------------------------------------------------------------------------------
/Haskell/.gitignore:
--------------------------------------------------------------------------------
1 | dist
2 | dist-*
3 | cabal-dev
4 | *.o
5 | *.hi
6 | *.chi
7 | *.chs.h
8 | *.dyn_o
9 | *.dyn_hi
10 | .hpc
11 | .hsenv
12 | .cabal-sandbox/
13 | cabal.sandbox.config
14 | *.prof
15 | *.aux
16 | *.hp
17 | *.eventlog
18 | .stack-work/
19 | cabal.project.local
20 | .HTF/
21 | .ghc.environment.*
22 | .vscode
--------------------------------------------------------------------------------
/Haskell/BookingApi.cabal:
--------------------------------------------------------------------------------
1 | name: BookingApi
2 | version: 0.1.0.0
3 | -- synopsis:
4 | -- description:
5 | author: Mark Seemann
6 | copyright: 2018 Mark Seemann
7 | category: Web
8 | build-type: Simple
9 | cabal-version: >=1.10
10 |
11 | library
12 | hs-source-dirs: src
13 | exposed-modules: BookingApi
14 | build-depends: base >= 4.7 && < 5
15 | , time
16 | , free
17 | , transformers
18 | default-language: Haskell2010
19 |
20 | executable BookingApi-exe
21 | hs-source-dirs: app
22 | main-is: Main.hs
23 | ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
24 | build-depends: base
25 | , time
26 | , free
27 | , transformers
28 | , BookingApi
29 | default-language: Haskell2010
30 |
31 | test-suite BookingApi-test
32 | type: exitcode-stdio-1.0
33 | hs-source-dirs: test
34 | main-is: Spec.hs
35 | build-depends: base
36 | , time
37 | , free
38 | , transformers
39 | , BookingApi
40 | , test-framework
41 | , test-framework-quickcheck2
42 | , QuickCheck
43 | , quickcheck-instances
44 | ghc-options: -threaded -rtsopts -with-rtsopts=-N -Wall
45 | default-language: Haskell2010
46 |
47 | source-repository head
48 | type: git
49 |
--------------------------------------------------------------------------------
/Haskell/Setup.hs:
--------------------------------------------------------------------------------
1 | import Distribution.Simple
2 | main = defaultMain
3 |
--------------------------------------------------------------------------------
/Haskell/app/Main.hs:
--------------------------------------------------------------------------------
1 | module Main where
2 |
3 | import Data.Time.Clock
4 | import Control.Monad.Trans.Free (iterM, Free)
5 | import Control.Monad.Trans.Maybe (runMaybeT)
6 | import BookingApi (ReservationsInstruction(..), Reservation(..), tryAccept)
7 |
8 | isReservationInFuture :: Reservation -> IO Bool
9 | isReservationInFuture r = do
10 | now <- getCurrentTime
11 | return $ now < reservationDate r
12 |
13 | -- Hard-coding most of it...
14 | interpret :: Free ReservationsInstruction a -> IO a
15 | interpret = iterM go
16 | where go (IsReservationInFuture r next) = isReservationInFuture r >>= next
17 | go (ReadReservations _ next) = next []
18 | go (Create _ next) = next 42
19 |
20 | main :: IO ()
21 | main = do
22 | now <- getCurrentTime
23 | let tomorrow = nominalDay `addUTCTime` now
24 | let r = Reservation tomorrow "mark@example.com" "Mark Seemann" 4 False
25 | print =<< interpret (runMaybeT $ tryAccept 10 r)
26 |
--------------------------------------------------------------------------------
/Haskell/src/BookingApi.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE DeriveFunctor #-}
2 | module BookingApi where
3 |
4 | import Data.Time.Clock
5 | import Control.Monad
6 | import Control.Monad.Trans.Class
7 | import Control.Monad.Trans.Maybe
8 | import Control.Monad.Trans.Free
9 |
10 | -- Domain model
11 |
12 | data Reservation = Reservation
13 | { reservationDate :: UTCTime
14 | , reservationEmail :: String
15 | , reservationName :: String
16 | , reservationQuantity :: Int
17 | , reservationIsAccepted :: Bool }
18 | deriving (Show, Eq)
19 |
20 | -- Instruction set
21 |
22 | data ReservationsInstruction next =
23 | IsReservationInFuture Reservation (Bool -> next)
24 | | ReadReservations UTCTime ([Reservation] -> next)
25 | | Create Reservation (Int -> next)
26 | deriving Functor
27 |
28 | -- Program
29 |
30 | type ReservationsProgram = Free ReservationsInstruction
31 |
32 | -- Lifts
33 |
34 | isReservationInFuture :: MonadTrans t =>
35 | Reservation -> t ReservationsProgram Bool
36 | isReservationInFuture r = lift $ liftF $ IsReservationInFuture r id
37 |
38 | readReservations :: MonadTrans t =>
39 | UTCTime -> t ReservationsProgram [Reservation]
40 | readReservations date = lift $ liftF $ ReadReservations date id
41 |
42 | create :: MonadTrans t => Reservation -> t ReservationsProgram Int
43 | create r = lift $ liftF $ Create r id
44 |
45 | -- Maître'D
46 |
47 | tryAccept :: Int -> Reservation -> MaybeT ReservationsProgram Int
48 | tryAccept capacity reservation = do
49 | guard =<< isReservationInFuture reservation
50 |
51 | reservations <- readReservations $ reservationDate reservation
52 | let reservedSeats = sum $ reservationQuantity <$> reservations
53 | guard $ reservedSeats + reservationQuantity reservation <= capacity
54 |
55 | create $ reservation { reservationIsAccepted = True }
56 |
--------------------------------------------------------------------------------
/Haskell/stack.yaml:
--------------------------------------------------------------------------------
1 | # This file was automatically generated by 'stack init'
2 | #
3 | # Some commonly used options have been documented as comments in this file.
4 | # For advanced use and comprehensive documentation of the format, please see:
5 | # https://docs.haskellstack.org/en/stable/yaml_configuration/
6 |
7 | # Resolver to choose a 'specific' stackage snapshot or a compiler version.
8 | # A snapshot resolver dictates the compiler version and the set of packages
9 | # to be used for project dependencies. For example:
10 | #
11 | # resolver: lts-3.5
12 | # resolver: nightly-2015-09-21
13 | # resolver: ghc-7.10.2
14 | # resolver: ghcjs-0.1.0_ghc-7.10.2
15 | # resolver:
16 | # name: custom-snapshot
17 | # location: "./custom-snapshot.yaml"
18 | resolver: lts-10.4
19 |
20 | # User packages to be built.
21 | # Various formats can be used as shown in the example below.
22 | #
23 | # packages:
24 | # - some-directory
25 | # - https://example.com/foo/bar/baz-0.0.2.tar.gz
26 | # - location:
27 | # git: https://github.com/commercialhaskell/stack.git
28 | # commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
29 | # - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
30 | # extra-dep: true
31 | # subdirs:
32 | # - auto-update
33 | # - wai
34 | #
35 | # A package marked 'extra-dep: true' will only be built if demanded by a
36 | # non-dependency (i.e. a user package), and its test suites and benchmarks
37 | # will not be run. This is useful for tweaking upstream packages.
38 | packages:
39 | - .
40 | # Dependency packages to be pulled from upstream that are not in the resolver
41 | # (e.g., acme-missiles-0.3)
42 | extra-deps:
43 | - free-5
44 |
45 | # Override default flag values for local packages and extra-deps
46 | # flags: {}
47 |
48 | # Extra package databases containing global packages
49 | # extra-package-dbs: []
50 |
51 | # Control whether we use the GHC we find on the path
52 | # system-ghc: true
53 | #
54 | # Require a specific version of stack, using version ranges
55 | # require-stack-version: -any # Default
56 | # require-stack-version: ">=1.6"
57 | #
58 | # Override the architecture used by stack, especially useful on Windows
59 | # arch: i386
60 | # arch: x86_64
61 | #
62 | # Extra directories used by stack for building
63 | # extra-include-dirs: [/path/to/dir]
64 | # extra-lib-dirs: [/path/to/dir]
65 | #
66 | # Allow a newer minor version of GHC than the snapshot specifies
67 | # compiler-check: newer-minor
--------------------------------------------------------------------------------
/Haskell/test/Spec.hs:
--------------------------------------------------------------------------------
1 | {-# LANGUAGE ViewPatterns #-}
2 | import Data.Maybe
3 | import Test.Framework (defaultMain, Test)
4 | import Test.Framework.Providers.QuickCheck2 (testProperty)
5 | import Test.QuickCheck
6 | import Test.QuickCheck.Instances ()
7 | import Control.Monad.Trans.Free (iter, foldFreeT)
8 | import Control.Monad.Trans.Maybe (runMaybeT)
9 | import Control.Monad.Trans.Writer.Lazy
10 | import BookingApi (ReservationsInstruction(..), Reservation(..), tryAccept)
11 |
12 | newtype ArbReservation = ArbReservation { getReservation :: Reservation }
13 | deriving (Show, Eq)
14 |
15 | instance Arbitrary ArbReservation where
16 | arbitrary = do
17 | (d, e, n, Positive q, b) <- arbitrary
18 | return $ ArbReservation $ Reservation d e n q b
19 |
20 | main :: IO ()
21 | main = defaultMain tests
22 |
23 | tests :: [Test]
24 | tests =
25 | [ testProperty "tryAccept reservation in the past" $ \
26 | (Positive capacity) (ArbReservation reservation)
27 | ->
28 | let stub (IsReservationInFuture _ next) = next False
29 | stub (ReadReservations _ next) = next []
30 | stub (Create _ next) = next 0
31 |
32 | actual = iter stub $ runMaybeT $ tryAccept capacity reservation
33 |
34 | in isNothing actual
35 | ,
36 | testProperty "tryAccept reservation when capacity is insufficient" $ \
37 | (Positive i)
38 | (fmap getReservation -> reservations)
39 | (ArbReservation reservation)
40 | ->
41 | let stub (IsReservationInFuture _ next) = next True
42 | stub (ReadReservations _ next) = next reservations
43 | stub (Create _ next) = next 0
44 | reservedSeats = sum $ reservationQuantity <$> reservations
45 | capacity = reservedSeats + reservationQuantity reservation - i
46 |
47 | actual = iter stub $ runMaybeT $ tryAccept capacity reservation
48 |
49 | in isNothing actual
50 | ,
51 | testProperty "tryAccept, happy path" $ \
52 | (NonNegative i)
53 | (fmap getReservation -> reservations)
54 | (ArbReservation reservation)
55 | expected
56 | ->
57 | let spy (IsReservationInFuture _ next) = return $ next True
58 | spy (ReadReservations _ next) = return $ next reservations
59 | spy (Create r next) = tell [r] >> return (next expected)
60 | reservedSeats = sum $ reservationQuantity <$> reservations
61 | capacity = reservedSeats + reservationQuantity reservation + i
62 |
63 | (actual, observedReservations) =
64 | runWriter $ foldFreeT spy $ runMaybeT $ tryAccept capacity reservation
65 |
66 | in Just expected == actual &&
67 | [True] == (reservationIsAccepted <$> observedReservations)
68 | ]
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2018 Mark Seemann
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Dependency Injection revisited
2 |
3 | Sample code for the articles:
4 | - [Dependency Injection revisited](http://blog.ploeh.dk/2018/07/24/dependency-injection-revisited)
5 | - [Flattening arrow code using a stack of monads](http://blog.ploeh.dk/2018/07/30/flattening-arrow-code-using-a-stack-of-monads)
6 | - [Terse operators make business code more readable](http://blog.ploeh.dk/2018/07/02/terse-operators-make-business-code-more-readable)
7 |
--------------------------------------------------------------------------------