const HAND: &str = "6v1";
const PAWN: &str = "7v1";
+const PAWN2: &str = "8v1";
const ALICE: &str = "1#1";
#[throws(AE)]
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)]
test!(c, "claim", c.claim()?);
+ test!(c, "ungrab-race", c.ungrab_race()?);
+
debug!("finishing");
}