all repos

tyess @ 9d6800b9bd7749121b543980527b071ac0d497f6

chess in typst

tyess/tests/parse.typ (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
what's creamy, 27 days ago
1
#import "../notation.typ": parse-move
2
#import "testutil.typ": assert-eq
3
4
#let pm(s) = parse-move(s)
5
6
#let m = pm("e4")
7
#assert-eq(m.kind, "move")
8
#assert-eq(m.piece, "P")
9
#assert-eq(m.dest, (5, 5))
10
#assert-eq(m.capture, false)
11
12
#let m = pm("Nf3")
13
#assert-eq(m.piece, "N")
14
#assert-eq(m.dest, (6, 6))
15
16
#let m = pm("Bxe5")
17
#assert-eq(m.piece, "B")
18
#assert-eq(m.dest, (5, 4))
19
#assert-eq(m.capture, true)
20
21
#let m = pm("Qxf7+")
22
#assert-eq(m.suffix, "+")
23
24
#let m = pm("Qxf7#")
25
#assert-eq(m.suffix, "#")
26
27
#let m = pm("e8=Q")
28
#assert-eq(m.piece, "P")
29
#assert-eq(m.dest, (5, 1))
30
#assert-eq(m.promotion, "Q")
31
32
#assert-eq(pm("O-O").kind, "castle")
33
#assert-eq(pm("O-O").side, "kingside")
34
#assert-eq(pm("O-O-O").side, "queenside")
35
#assert-eq(pm("0-0").side, "kingside")
36
37
#let m = pm("Rae1")
38
#assert-eq(m.disambig.type, "file")
39
#assert-eq(m.disambig.value, "a")
40
41
#let m = pm("R1a3")
42
#assert-eq(m.disambig.type, "rank")
43
44
#let m = pm("Qh4e1")
45
#assert-eq(m.disambig.type, "square")
46
#assert-eq(m.disambig.value, "h4")
47
48
#let m = pm("exd6")
49
#assert-eq(m.capture, true)
50
#assert-eq(m.disambig.type, "file")
51
#assert-eq(m.disambig.value, "e")
52
53
#let m = pm("nf3")
54
#assert-eq(m.piece, "N")
55
56
#let m = pm("qd3")
57
#assert-eq(m.piece, "Q")
58
#assert-eq(m.dest, (4, 6))
59
60
#let m = pm("axb6")
61
#assert-eq(m.kind, "move")
62
#assert-eq(m.piece, "P")
63
#assert-eq(m.dest, (2, 3))
64
#assert-eq(m.capture, true)
65
#assert-eq(m.disambig.type, "file")
66
#assert-eq(m.disambig.value, "a")
67
68
#let m = pm("dxc3")
69
#assert-eq(m.dest, (3, 6))
70
#assert-eq(m.disambig.value, "d")
71
72
#assert-eq(pm("zzz").kind, "error")
73
#assert-eq(pm("Qx?").kind, "error")