summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--tests/roulette.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/roulette.rs b/tests/roulette.rs
index 0c5e195..970ab6a 100644
--- a/tests/roulette.rs
+++ b/tests/roulette.rs
@@ -396,3 +396,23 @@ fn rejects_bad_roulette_results() {
396 assert!(parse_roulette_response("ROULETTE_RESULT s 1 1 1 17 black nope").is_err()); 396 assert!(parse_roulette_response("ROULETTE_RESULT s 1 1 1 17 black nope").is_err());
397 assert!(parse_roulette_response("").is_err()); 397 assert!(parse_roulette_response("").is_err());
398} 398}
399
400#[test]
401fn chips_can_be_taken_back_one_at_a_time() {
402 let mut bets = Bets::default();
403 bets.add(BetTarget::Straight { number: 17 }, 50);
404 bets.add(BetTarget::Outside { kind: Outside::Red }, 10);
405
406 bets.reduce(&BetTarget::Straight { number: 17 }, 25);
407 assert_eq!(bets.amount_on(&BetTarget::Straight { number: 17 }), 25);
408 assert_eq!(bets.total(), 35);
409
410 // Reducing past zero drops the chip instead of going negative.
411 bets.reduce(&BetTarget::Straight { number: 17 }, 100);
412 assert_eq!(bets.amount_on(&BetTarget::Straight { number: 17 }), 0);
413 assert_eq!(bets.total(), 10);
414
415 // A target with no chip is left alone.
416 bets.reduce(&BetTarget::Dozen { index: 0 }, 25);
417 assert_eq!(bets.total(), 10);
418}