From: Ian Jackson Date: Mon, 5 Apr 2021 16:37:44 +0000 (+0100) Subject: wdt-simple: Break out check() X-Git-Tag: otter-0.5.0~167 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=88f599e04d85d102bbd1723653e3b7c3bdc31f79;p=otter.git wdt-simple: Break out check() Signed-off-by: Ian Jackson --- diff --git a/wdriver/wdt-simple.rs b/wdriver/wdt-simple.rs index 9730c578..b40699dc 100644 --- a/wdriver/wdt-simple.rs +++ b/wdriver/wdt-simple.rs @@ -204,25 +204,6 @@ impl Ctx { 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> { @@ -238,33 +219,61 @@ impl Ctx { 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::,AE>>()?; - Ok::<_,AE>(Got { side, now, log, held, client, yes }) - }).collect::,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")?; } }