#import "../notation.typ": parse-move #import "testutil.typ": assert-eq #let pm(s) = parse-move(s) #let m = pm("e4") #assert-eq(m.kind, "move") #assert-eq(m.piece, "P") #assert-eq(m.dest, (5, 5)) #assert-eq(m.capture, false) #let m = pm("Nf3") #assert-eq(m.piece, "N") #assert-eq(m.dest, (6, 6)) #let m = pm("Bxe5") #assert-eq(m.piece, "B") #assert-eq(m.dest, (5, 4)) #assert-eq(m.capture, true) #let m = pm("Qxf7+") #assert-eq(m.suffix, "+") #let m = pm("Qxf7#") #assert-eq(m.suffix, "#") #let m = pm("e8=Q") #assert-eq(m.piece, "P") #assert-eq(m.dest, (5, 1)) #assert-eq(m.promotion, "Q") #assert-eq(pm("O-O").kind, "castle") #assert-eq(pm("O-O").side, "kingside") #assert-eq(pm("O-O-O").side, "queenside") #assert-eq(pm("0-0").side, "kingside") #let m = pm("Rae1") #assert-eq(m.disambig.type, "file") #assert-eq(m.disambig.value, "a") #let m = pm("R1a3") #assert-eq(m.disambig.type, "rank") #let m = pm("Qh4e1") #assert-eq(m.disambig.type, "square") #assert-eq(m.disambig.value, "h4") #let m = pm("exd6") #assert-eq(m.capture, true) #assert-eq(m.disambig.type, "file") #assert-eq(m.disambig.value, "e") #let m = pm("nf3") #assert-eq(m.piece, "N") #let m = pm("qd3") #assert-eq(m.piece, "Q") #assert-eq(m.dest, (4, 6)) #let m = pm("axb6") #assert-eq(m.kind, "move") #assert-eq(m.piece, "P") #assert-eq(m.dest, (2, 3)) #assert-eq(m.capture, true) #assert-eq(m.disambig.type, "file") #assert-eq(m.disambig.value, "a") #let m = pm("dxc3") #assert-eq(m.dest, (3, 6)) #assert-eq(m.disambig.value, "d") #assert-eq(pm("zzz").kind, "error") #assert-eq(pm("Qx?").kind, "error")