Sha256: 04eed68f182a462c66316d00c41f2bc412584489f72bf151864ca2f259e3acd0

Contents?: true

Size: 1.69 KB

Versions: 12

Compression:

Stored size: 1.69 KB

Contents

import org.scalatest.concurrent.{IntegrationPatience, Conductors}
import org.scalatest.{Matchers, FunSuite}

class BankAccountTest extends FunSuite with Matchers with Conductors with IntegrationPatience {
  test("open account") {
    BankAccount().getBalance should be (Some(0))
  }

  test("incrementing and checking balance") {
    val acct = BankAccount()
    acct.getBalance should be (Some(0))
    acct.incrementBalance(10) should be (Some(10))
    acct.getBalance should be (Some(10))
    acct.incrementBalance(10) should be (Some(20))
    acct.getBalance should be (Some(20))
  }

  test("closed account should hold no balance") {
    val acct = BankAccount()
    acct.closeAccount()
    acct.incrementBalance(10)
    acct.incrementBalance(10)
    acct.getBalance should be (None)
  }

  test("incrementing balance from multiple threads") {
    val conductor = new Conductor
    import conductor._

    val acct = BankAccount()

    thread("t1") {
      acct.incrementBalance(10)
      acct.getBalance should be (Some(10))
      beat should be (1)
      waitForBeat(2)
      acct.getBalance should be (Some(15))
    }

    thread("t2") {
      waitForBeat(1)
      acct.getBalance should be (Some(10))
      acct.incrementBalance(5)
      acct.getBalance should be (Some(15))
      beat should be (2)
    }
  }

  test("incrementing balance from multiple threads - concurrent updates") {
    val conductor = new Conductor
    import conductor._

    val acct = BankAccount()

    thread("t1") {
      for (a <- 1 to 10)
        acct.incrementBalance(10)
    }

    thread("t2") {
      for (a <- 1 to 10)
        acct.incrementBalance(5)
    }

    whenFinished {
      acct.getBalance should be (Some(150))
    }
  }
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
trackler-2.0.0.1 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.0.0.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.4.1 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.4.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.3.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.2.1 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.2.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.1.2 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.1.1 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.1.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.0.1 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-1.0.0 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala