From debd155e32bf2512573a02d9af54d22f0b7a9bc8 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 4 Apr 2021 12:17:07 +0100 Subject: [PATCH] wdt-hand: New test for interleaved drag and drop This is supposed to have failed until just now. In fact, it needed some souping up first... Signed-off-by: Ian Jackson --- wdriver/wdt-hand.rs | 67 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/wdriver/wdt-hand.rs b/wdriver/wdt-hand.rs index 9a0014b9..6cf72342 100644 --- a/wdriver/wdt-hand.rs +++ b/wdriver/wdt-hand.rs @@ -14,6 +14,7 @@ usual_wanted_tests!{Ctx, su} const HAND: &str = "6v1"; const PAWN: &str = "7v1"; +const PAWN2: &str = "8v1"; const ALICE: &str = "1#1"; #[throws(AE)] @@ -133,6 +134,70 @@ impl Ctx { chk(&mut w, HAND, None)?; } } + + #[throws(AE)] + fn ungrab_race(&mut self){ + let su = &mut self.su; + + const P_ALICE: &str = PAWN; + const P_BOB: &str = PAWN2; + const DEST: Pos = PosC::new(50, 20); + + { + let mut w = su.w(&self.alice)?; + + w.action_chain() + .move_pc(&w, P_ALICE)? + .click_and_hold() + .move_w(&w, DEST)? + .perform() + .did("alice, drag pawn over target")?; + w.synch()?; + } + + { + let mut w = su.w(&self.bob)?; + + w.action_chain() + .move_pc(&w, P_BOB)? + .click_and_hold() + .move_w(&w, DEST)? + .release() + .perform() + .did("bob, drag pawn to target")?; + w.synch()?; + } + + { + let mut w = su.w(&self.alice)?; + + w.action_chain() + .release() + .perform() + .did("alice, drop pawn on target")?; + w.synch()?; + } + + let mut chk_alice_on_top = |pl|{ + let mut w = su.w(pl)?; + w.synch()?; + let pcs = w.pieces()?; + let find = |pc| { + let vpid = w.piece_vpid(pc).unwrap(); + pcs.iter().enumerate() + .find_map(|(ix, wp)| if wp.piece == vpid { Some(ix) } else { None }) + .unwrap() + }; + assert!( + find(P_ALICE) > find(P_BOB) + ); + Ok::<_,AE>(()) + }; + + + chk_alice_on_top(&self.alice).did("chk alice")?; + chk_alice_on_top(&self.bob ).did("chk bob" )?; + } } #[throws(AE)] @@ -141,6 +206,8 @@ fn tests(UsualSetup { su, alice, bob, ..}: UsualSetup) { test!(c, "claim", c.claim()?); + test!(c, "ungrab-race", c.ungrab_race()?); + debug!("finishing"); } -- 2.30.2