def test_play_game(db, socket, benchmark): # A game with 194 moves sgf = ''' (;EV[2nd Bailing Cup, semi-final 2] DT[2014-09-20] PB[Park Jungwhan]BR[9p] PW[Ke Jie]WR[4p] KM[7.5]RE[W+R] SO[Go4Go.net] ;B[qd];W[dc];B[pq];W[dp];B[oc];W[qn];B[qp];W[pj];B[fq];W[cn];B[pl] ;W[ql];B[pm];W[qm];B[pn];W[qh];B[jp];W[ce];B[fo];W[lq];B[dm];W[dn] ;B[em];W[cm];B[dk];W[jr];B[mq];W[lr];B[hq];W[mp];B[nq];W[ko];B[cq] ;W[dq];B[dr];W[cl];B[br];W[dl];B[el];W[dj];B[ej];W[ck];B[kp];W[lp] ;B[lo];W[ln];B[mo];W[oq];B[qk];W[pk];B[qo];W[no];B[mn];W[or];B[rk] ;W[mm];B[nn];W[on];B[nm];W[om];B[nl];W[ol];B[po];W[oo];B[ei];W[jo] ;B[io];W[in];B[ip];W[km];B[nk];W[lk];B[ni];W[li];B[ng];W[lg];B[ok] ;W[qj];B[rl];W[qe];B[pd];W[oe];B[pe];W[of];B[mf];W[pf];B[qf];W[oh] ;B[nh];W[nc];B[kh];W[lh];B[oi];W[ob];B[nd];W[od];B[pc];W[ne];B[re] ;W[ph];B[lf];W[md];B[kf];W[kg];B[jg];W[kd];B[jj];W[ki];B[kk];W[kj] ;B[jk];W[oj];B[nj];W[ll];B[jd];W[ji];B[jc];W[kc];B[jf];W[hj];B[il] ;W[im];B[hk];W[ij];B[op];W[np];B[pr];W[pp];B[ec];W[ed];B[fc];W[dd] ;B[op];W[nr];B[di];W[ek];B[fk];W[ik];B[hl];W[jl];B[jb];W[mb];B[pb] ;W[ie];B[je];W[pa];B[qa];W[oa];B[rb];W[fd];B[ma];W[la];B[lb];W[na] ;B[ka];W[lc];B[ma];W[nb];B[bj];W[gc];B[gb];W[fb];B[hc];W[eb];B[bo] ;W[fj];B[dk];W[hd];B[hg];W[fi];B[id];W[ek];B[kb];W[dk];B[ci];W[bh] ;B[fl];W[bi];B[cj];W[eh];B[am];W[an];B[eg];W[dh];B[ch];W[cg];B[dg] ;W[fh];B[me];W[ri];B[pi];W[rg];B[qi];W[qg]) ''' node = parse_sgf(sgf).children[0] benchmark(play_one_game, node, db, socket)
def test_parse_variations(): node = parse_sgf('(;B[qd](;W[dc];B[pq])(;W[dp];B[pp]))') assert node.prop_one('b') == 'qd' assert len(node.children) == 2 assert node.children[0].prop_one('w') == 'dc' assert len(node.children[0].children) == 1 assert node.children[0].children[0].prop_one('b') == 'pq' assert node.children[1].prop_one('w') == 'dp' assert len(node.children[1].children) == 1 assert node.children[1].children[0].prop_one('b') == 'pp'
def test_parse_sgf(): node = parse_sgf('(;SZ[9]EV[event]KM[7.5];B[qd];W[dc];B[pq];W[dp])') assert node.prop_one('sz') == '9' assert node.prop_one('ev') == 'event' assert node.prop_one('km') == '7.5' moves = [ ['B', 'qd'], ['W', 'dc'], ['B', 'pq'], ['W', 'dp'], ] for move in moves: assert len(node.children) == 1 node = node.children[0] assert len(node.props) == 1 assert node.prop_one(move[0]) == move[1]
def game_from_sgf(sgf): node = parse_sgf(sgf) return game_from_node(node)