Sha256: a07765600fed44c35b42d51fab644cd757d26104f80fd25facd32eb2a09a82ec

Contents?: true

Size: 1.87 KB

Versions: 194

Compression:

Stored size: 1.87 KB

Contents

module BankAccountTest

open NUnit.Framework
open BankAccount

[<Test>]
let ``Returns empty balance after opening`` () =
    let account = mkBankAccount() |> openAccount

    Assert.That(getBalance account, Is.EqualTo(Some 0.0))

[<Test>]
[<Ignore("Remove to run test")>]
let ``Check basic balance`` () =
    let account = mkBankAccount() |> openAccount
    let openingBalance = account |> getBalance 

    let updatedBalance = 
        account
        |> updateBalance 10.0 
        |> getBalance

    Assert.That(openingBalance, Is.EqualTo(Some 0.0))
    Assert.That(updatedBalance, Is.EqualTo(Some 10.0))

[<Test>]
[<Ignore("Remove to run test")>]
let ``Balance can increment or decrement`` () =    
    let account = mkBankAccount() |> openAccount
    let openingBalance = account |> getBalance 

    let addedBalance = 
        account 
        |> updateBalance 10.0
        |> getBalance

    let subtractedBalance = 
        account 
        |> updateBalance -15.0
        |> getBalance

    Assert.That(openingBalance, Is.EqualTo(Some 0.0))
    Assert.That(addedBalance, Is.EqualTo(Some 10.0))
    Assert.That(subtractedBalance, Is.EqualTo(Some -5.0))

[<Test>]
[<Ignore("Remove to run test")>]
let ``Account can be closed`` () =
    let account = 
        mkBankAccount()
        |> openAccount
        |> closeAccount

    Assert.That(account |> getBalance, Is.EqualTo(None))
    
[<Test>]
[<Ignore("Remove to run test")>]
let ``Account can be updated from multiple threads`` () =
    let account = 
        mkBankAccount()
        |> openAccount

    let updateAccountAsync =        
        async {                             
            account 
            |> updateBalance 1.0
            |> ignore
        }

    updateAccountAsync
    |> List.replicate 1000
    |> Async.Parallel 
    |> Async.RunSynchronously
    |> ignore

    Assert.That(account |> getBalance, Is.EqualTo(Some 1000.0))

Version data entries

194 entries across 194 versions & 1 rubygems

Version Path
trackler-2.2.1.22 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.21 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.20 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.19 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.18 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.17 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.16 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.15 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.14 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.13 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.12 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.11 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.10 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.9 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.8 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.7 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.6 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.5 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.4 tracks/fsharp/exercises/bank-account/BankAccountTest.fs
trackler-2.2.1.3 tracks/fsharp/exercises/bank-account/BankAccountTest.fs