Sha256: c3eb2586ac0029fafafc3d50a38bdcad75aebd28f50c717b7955e0985020e195

Contents?: true

Size: 1.79 KB

Versions: 148

Compression:

Stored size: 1.79 KB

Contents

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

/** @version created manually **/
class BankAccountTest extends FunSuite with Matchers with Conductors with IntegrationPatience {
  test("open account") {
    Bank.openAccount().getBalance should be (Some(0))
  }

  test("incrementing and checking balance") {
    pending
    val acct = Bank.openAccount()
    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") {
    pending
    val acct = Bank.openAccount()
    acct.closeAccount()
    acct.incrementBalance(10)
    acct.incrementBalance(10)
    acct.getBalance should be (None)
  }

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

    val acct = Bank.openAccount()

    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") {
    pending
    val conductor = new Conductor
    import conductor._

    val acct = Bank.openAccount()

    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

148 entries across 148 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.179 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.178 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.177 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.176 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.175 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.174 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.173 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.172 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.171 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.170 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.169 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.167 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.166 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.165 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.164 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.163 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.162 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.161 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala
trackler-2.2.1.160 tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala