From: Ian Jackson Date: Thu, 28 Jan 2021 17:45:25 +0000 (+0000) Subject: wdt: Break out w.piece_held() X-Git-Tag: otter-0.4.0~656 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ed2446411ac873ac2a531be7ee0a1c38fc39aa03;p=otter.git wdt: Break out w.piece_held() Signed-off-by: Ian Jackson --- 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>(()) };