From 2915d826f744612e0d975282f5bddf13270b9f3f Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 28 Oct 2026 23:19:52 +0100 Subject: v1.1.0: highlight winning symbols on the slots board --- tests/client_core.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'tests/client_core.rs') diff --git a/tests/client_core.rs b/tests/client_core.rs index 80ec587..91ddcab 100644 --- a/tests/client_core.rs +++ b/tests/client_core.rs @@ -155,12 +155,12 @@ fn spin_replaces_the_board_and_keeps_the_controls_line() { assert!(h.sent.iter().any(|line| line == "PLAY_START slots 50")); assert_eq!(h.screen.lines.len(), lines_before_spin); - h.reply("GAME_RESULT session-1 100 50 1050 CCCCLLCLODGSDGS win 1"); + h.reply("GAME_RESULT session-1 100 50 1050 CCCCLLCLODGSDGS win 1 0,3,6"); assert_eq!(h.board().len(), 9); assert!(h .board() .get(2) - .is_some_and(|line| line.contains("[ C ] [ C ] [ C ] [ D ] [ D ]"))); + .is_some_and(|line| line.contains("{ C } { C } { C } [ D ] [ D ]"))); assert!(h.board()[6].contains("Won 100 PLN")); assert!(h.board()[7].contains("Winning lines: 1")); assert!(h.board()[1].contains("Balance: 1050 PLN")); @@ -173,7 +173,7 @@ fn changing_the_bet_after_a_spin_does_not_leave_stale_lines() { let mut h = Harness::new(); h.enter_slots("50"); h.key(Key::Char(' ')); - h.reply("GAME_RESULT session-1 100 50 1050 CCCCLLCLODGSDGS win 1"); + h.reply("GAME_RESULT session-1 100 50 1050 CCCCLLCLODGSDGS win 1 0,3,6"); let lines_before_bet = h.screen.lines.len(); h.key(Key::Char('+')); @@ -183,7 +183,7 @@ fn changing_the_bet_after_a_spin_does_not_leave_stale_lines() { assert!(h .board() .get(2) - .is_some_and(|line| line.contains("[ C ] [ C ] [ C ] [ D ] [ D ]"))); + .is_some_and(|line| line.contains("{ C } { C } { C } [ D ] [ D ]"))); assert_eq!(h.screen.lines.len(), lines_before_bet); assert_eq!( h.screen @@ -206,6 +206,7 @@ fn a_losing_spin_shows_no_win_and_no_winning_lines() { assert_eq!(h.board().len(), 9); assert!(h.board()[6].contains("No win.")); assert_eq!(h.board()[7], ""); + assert!(!h.board()[2].contains('{')); } #[test] @@ -214,11 +215,12 @@ fn a_mega_win_shows_all_winning_lines() { h.enter_slots("10"); h.key(Key::Char(' ')); - h.reply(&format!("GAME_RESULT session-1 750 10 1740 {ALL_C} mega 1,2,3,4,5")); + h.reply(&format!("GAME_RESULT session-1 750 10 1740 {ALL_C} mega 1,2,3,4,5 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14")); assert_eq!(h.board().len(), 9); assert!(h.board()[6].contains("MEGA WIN! 750 PLN")); assert!(h.board()[7].contains("Winning lines: 1,2,3,4,5")); + assert_eq!(h.board()[2].matches("{ C }").count(), 5); } #[test] @@ -517,12 +519,13 @@ fn disconnect_clears_connection_state() { #[test] fn parses_a_five_by_three_result_with_winning_lines() { - let response = format!("GAME_RESULT session-1 100 50 1050 {WIN3} win 1"); + let response = format!("GAME_RESULT session-1 100 50 1050 {WIN3} win 1 0,3,6"); let result = parse_spin_response(&response).expect("valid 5x3 result"); assert_eq!(result.reels.chars().count(), 15); assert_eq!(result.win_type, "win"); assert_eq!(result.win_lines, vec![1]); + assert_eq!(result.win_cells, vec![0, 3, 6]); } #[test] @@ -533,6 +536,7 @@ fn accepts_a_legacy_three_symbol_result() { assert_eq!(result.reels, "OSS"); assert_eq!(result.win_type, "two"); assert!(result.win_lines.is_empty()); + assert!(result.win_cells.is_empty()); } #[test] -- cgit v1.2.3