#import "../rules.typ": generate-moves-for #import "../board.typ": starting-grid #import "testutil.typ": assert-eq // king, no moves in starting position #assert-eq(generate-moves-for(starting-grid, 5, 8, "white").len(), 0) // pawn e2 → e3, e4 #let pmoves = generate-moves-for(starting-grid, 5, 7, "white") #assert(pmoves.len() >= 2) #assert-eq(pmoves.at(0), (5, 6)) #assert-eq(pmoves.at(1), (5, 5)) // knight b1 → a3, c3 #let km = generate-moves-for(starting-grid, 2, 8, "white") #assert-eq(km.len(), 2) #assert-eq(km.at(0), (1, 6)) #assert-eq(km.at(1), (3, 6)) // en passant: white pawn on a4 with ep = b6 #let ep-grid = ( (".", ".", ".", ".", ".", ".", ".", "."), (".", ".", ".", ".", ".", ".", ".", "."), (".", ".", ".", ".", ".", ".", ".", "."), (".", "p", ".", ".", ".", ".", ".", "."), ("P", ".", ".", ".", ".", ".", ".", "."), (".", ".", ".", ".", ".", ".", ".", "."), (".", ".", ".", ".", ".", ".", ".", "."), (".", ".", ".", ".", ".", ".", ".", "."), ) #let epm = generate-moves-for(ep-grid, 1, 5, "white", ep: (2, 3)) #let found = false #for m in epm { if m.at(0) == 2 and m.at(1) == 3 { found = true; break } } #assert(found)