From 136293b7a608519bd80cdd4a82c0351618701bb4 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Mon, 5 Apr 2021 11:51:52 +0100 Subject: [PATCH] wdt-hand: New test case for ungrab-then-regrab, setup This demonstrates the problem but we don't actually check yet that it went wrong. Signed-off-by: Ian Jackson --- wdriver/wdt-hand.rs | 61 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 3 deletions(-) diff --git a/wdriver/wdt-hand.rs b/wdriver/wdt-hand.rs index 104e6ee8..ac6d7829 100644 --- a/wdriver/wdt-hand.rs +++ b/wdriver/wdt-hand.rs @@ -205,15 +205,70 @@ impl Ctx { chk_alice_on_top(&self.alice).did("chk alice")?; chk_alice_on_top(&self.bob ).did("chk bob" )?; } + + #[throws(AE)] + fn regrab_race(&mut self){ + let su = &mut self.su; + const MIDHAND: Pos = PosC::new(40, 40); + const OUTHAND: Pos = PosC::new(20, 20); + + { + let mut w = su.w(&self.bob)?; + + w.action_chain() + + .move_pc(&w, PAWN)? + .click_and_hold() + .move_w(&w, (MIDHAND + Pos::new(-20,0))?)? + .release() + + .move_w(&w, MIDHAND)? + .click() + .release() + + .key_down('C') + .key_up('C') + + .perform() + .did("bob, setup")?; + + w.synch()?; + } + + { + let pauseable = su.otter_pauseable(); + + let mut w = su.w(&self.alice)?; + w.synch()?; + let start = w.find_piece(PAWN)?.posw()?; + + let paused = pauseable.pause()?; + + w.action_chain() + .move_pos(start)? + .click_and_hold() + .move_w(&w, OUTHAND)? + .release() + + .click() + + .perform() + .did("alice, drag out, and re-select")?; + + paused.resume()?; + + w.synch()?; + } + } } #[throws(AE)] fn tests(UsualSetup { su, alice, bob, ..}: UsualSetup) { let mut c = Ctx { su, alice, bob }; - test!(c, "claim", c.claim()?); - - test!(c, "ungrab-race", c.ungrab_race()?); + test!(c, "claim", c.claim() ?); + test!(c, "ungrab-race", c.ungrab_race() ?); + test!(c, "regrab-race", c.regrab_race() ?); debug!("finishing"); } -- 2.30.2