From ed2446411ac873ac2a531be7ee0a1c38fc39aa03 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 28 Jan 2021 17:45:25 +0000 Subject: [PATCH] wdt: Break out w.piece_held() Signed-off-by: Ian Jackson --- wdriver.rs | 15 +++++++++++++++ wdriver/wdt-simple.rs | 9 ++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/wdriver.rs b/wdriver.rs index 2c370433..3ac7379a 100644 --- a/wdriver.rs +++ b/wdriver.rs @@ -800,6 +800,21 @@ impl<'g> WindowGuard<'g> { } } + #[throws(AE)] + pub fn piece_held(&'g self, pc: &'g str) -> Option { + let held = self.execute_script(&format!(r##" + let pc = pieces['{}']; + return pc.held; + "##, &pc))?; + let held = held.value(); + dbg!(held); + match held { + serde_json::Value::Null => None, + serde_json::Value::String(s) => Some(s.to_owned()), + _ => Err(anyhow!("held check script gave {:?}", held))?, + } + } + #[throws(AE)] pub fn posg2posw(&'g self, posg: Pos) -> WebPos { let mat = self.matrix.get_or_try_init(||{ diff --git a/wdriver/wdt-simple.rs b/wdriver/wdt-simple.rs index cd0caeee..15a72a72 100644 --- a/wdriver/wdt-simple.rs +++ b/wdriver/wdt-simple.rs @@ -132,13 +132,8 @@ impl Ctx { let su = &mut self.su; let chk = |w: &WindowGuard<'_>| { - let held = w.execute_script(&format!(r##" - let pc = pieces['{}']; - return pc.held; - "##, &pc))?; - let held = held.value(); - dbg!(held); - ensure_eq!(held, &serde_json::Value::Null); + let held = w.piece_held(pc)?; + ensure_eq!(held, None); Ok::<_,AE>(()) }; -- 2.30.2