diff options
| author | jackkoenig | 2016-10-26 16:40:36 -0700 |
|---|---|---|
| committer | Jack Koenig | 2017-02-02 22:53:03 -0800 |
| commit | dd51b917566e6b30c3f123ca22a0393e73c2afe8 (patch) | |
| tree | f81fce104ccc3405c7924c76618483750a4350bb /src/test/scala/examples/VendingMachineUtils.scala | |
| parent | b0a328492383108509c322189ed2803f671d7a59 (diff) | |
Revamp VendingMachine.scala as cookbook example
* Move to cookbook
* Change FSM implementation to use switch & is
* Add non-FSM implementation
* Add execution-driven test
Diffstat (limited to 'src/test/scala/examples/VendingMachineUtils.scala')
| -rw-r--r-- | src/test/scala/examples/VendingMachineUtils.scala | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/test/scala/examples/VendingMachineUtils.scala b/src/test/scala/examples/VendingMachineUtils.scala new file mode 100644 index 00000000..e229dab5 --- /dev/null +++ b/src/test/scala/examples/VendingMachineUtils.scala @@ -0,0 +1,39 @@ +// See LICENSE for license details. + +package examples + +import scala.collection.mutable + +/* Useful utilities for testing vending machines */ +object VendingMachineUtils { + abstract class Coin(val name: String, val value: Int) + // US Coins + case object Penny extends Coin("penny", 1) + case object Nickel extends Coin("nickel", 5) + case object Dime extends Coin("dime", 10) + case object Quarter extends Coin("quarter", 25) + + // Harry Potter Coins + case object Knut extends Coin("knut", Penny.value * 2) // Assuming 1 Knut is worth $0.02 + case object Sickle extends Coin("sickle", Knut.value * 29) + case object Galleon extends Coin("galleon", Sickle.value * 17) + + def getExpectedResults(inputs: Seq[Option[Coin]], sodaCost: Int): Seq[Boolean] = { + var value = 0 + val outputs = mutable.ArrayBuffer.empty[Boolean] + for (input <- inputs) { + val incValue = input match { + case Some(coin) => coin.value + case None => 0 + } + if (value >= sodaCost) { + outputs.append(true) + value = 0 + } else { + outputs.append(false) + value += incValue + } + } + outputs + } +} |
