dbg!(&sides);
- let paused = su.pause_otter()?;
-
- for side in &sides {
- let w = su.w(side.window)?;
-
- w.action_chain()
- .move_w(&w, side.start)?
- .click()
- .release()
-
- .click_and_hold()
- .move_w(&w, side.try_end)?
- .release()
-
- .perform()
- .did("conflicting drag")?;
- }
-
- paused.resume()?;
#[derive(Debug)]
struct Got<'s> {
fn deref<'t>(&'t self) -> &'t Side<'s> { &self.side }
}
- let gots = sides.iter().map(|side|{
- let mut w = su.w(side.window)?;
- w.synch()?;
- let p = w.find_piece(pc)?;
- let now = p.posg()?;
+ let check = |su: &mut Setup|{
+
+ let gots = sides.iter().map(|side|{
+ let mut w = su.w(side.window)?;
+ w.synch()?;
+ let p = w.find_piece(pc)?;
+ let now = p.posg()?;
+
+ let log = w.retrieve_log(Html::lit("black knight"))?;
+ let held = w.piece_held(&pc)?;
+ let client = w.client()?;
+ let yes = held.as_ref() == Some(&client);
- let log = w.retrieve_log(Html::lit("black knight"))?;
- let held = w.piece_held(&pc)?;
- let client = w.client()?;
- let yes = held.as_ref() == Some(&client);
+ Ok::<_,AE>(Got { side, now, log, held, client, yes })
+ }).collect::<Result<Vec<_>,AE>>()?;
- Ok::<_,AE>(Got { side, now, log, held, client, yes })
- }).collect::<Result<Vec<_>,AE>>()?;
+ dbg!(&gots);
- dbg!(&gots);
+ let y = gots.iter().filter(|got| got.yes).next().expect("y");
+ let n = gots.iter().filter(|got| !got.yes).next().expect("n");
+ assert_eq!(y.now, y.try_end);
+ assert_eq!(n.now, y.try_end);
+ assert_eq!(n.now, y.try_end);
+ assert_eq!(n.held, y.held);
- let y = gots.iter().filter(|got| got.yes).next().expect("y");
- let n = gots.iter().filter(|got| !got.yes).next().expect("n");
- assert_eq!(y.now, y.try_end);
- assert_eq!(n.now, y.try_end);
- assert_eq!(n.now, y.try_end);
- assert_eq!(n.held, y.held);
+ for got in &gots {
+ let conflict = got.log.find_conflict().is_some();
+ assert_eq!(conflict, !got.yes);
+ }
- for got in &gots {
- let conflict = got.log.find_conflict().is_some();
- assert_eq!(conflict, !got.yes);
+ Ok::<_,AE>(())
+ };
+
+
+ let paused = su.pause_otter()?;
+
+ for side in &sides {
+ let w = su.w(side.window)?;
+
+ w.action_chain()
+ .move_w(&w, side.start)?
+ .click()
+ .release()
+
+ .click_and_hold()
+ .move_w(&w, side.try_end)?
+ .release()
+
+ .perform()
+ .did("conflicting drag")?;
}
+
+ paused.resume()?;
+
+ check(su).did("conflicting drag, check")?;
}
}