chiark / gitweb /
at-otter: Sort pawns, check displaced
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Mar 2021 17:57:08 +0000 (17:57 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 13 Mar 2021 17:57:08 +0000 (17:57 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
apitest/at-otter.rs

index 185d03cf3ea6f0aba78ec3fd4dd659916845a362..68d45739c55e464b5702b1c5b6a138378b7ac6dd 100644 (file)
@@ -421,17 +421,20 @@ impl Ctx {
     fn find_pawns<PI:Idx>(pieces: &IndexSlice<PI,[PieceInfo<JsV>]>)
                           -> [PI; 2]
     {
-      let pawns = pieces.iter_enumerated()
+      let mut pawns = pieces.iter_enumerated()
         .filter(|(i,p)| p.info["desc"].as_str().unwrap().ends_with(" pawn"))
         .map(|(i,_)| i)
         .take(2)
         .collect::<ArrayVec<[_;2]>>()
         .into_inner().unwrap();
+
+      pawns.sort_by_key(|&p| -pieces[p].pos.0[0]);
       dbgc!(pawns)
     }
 
     let a_pawns = find_pawns(a_pieces.as_slice());
     let b_pawns = find_pawns(b_pieces.as_slice());
+    // at this point the indices correspond
 
     bob.synch()?;
 
@@ -477,6 +480,12 @@ impl Ctx {
       dbgc!(nick, k,v,p);
     })?;
 
+    for &p in &b_pawns {
+      let b_pos = &b_pieces[p].pos;
+      let got = a_pawns.iter().find(|&&p| &a_pieces[p].pos == b_pos);
+      assert_eq!(got, None);
+    }
+
     // to repro a bug, have Bob move the RHS pawn out again
 
     self.su_mut().mgmt_conn.fakerng_unfake()?;