From f13d5bba1c4ccf4ae479e2d5f7267a181c212789 Mon Sep 17 00:00:00 2001 From: Sander Land Date: Sun, 26 Jul 2020 21:55:04 +0200 Subject: [PATCH] fix fox --- katrain/core/game.py | 4 ++-- tests/data/fox sgf error.sgf | 1 + tests/data/fox sgf works.sgf | 1 + tests/test_parser.py | 18 ++++++++++++++++++ 4 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 tests/data/fox sgf error.sgf create mode 100644 tests/data/fox sgf works.sgf diff --git a/katrain/core/game.py b/katrain/core/game.py index 9f8b8cf..21ed7fd 100644 --- a/katrain/core/game.py +++ b/katrain/core/game.py @@ -11,10 +11,10 @@ from katrain.core.constants import ( HOMEPAGE, OUTPUT_DEBUG, OUTPUT_INFO, + PLAYER_AI, STATUS_ANALYSIS, STATUS_INFO, STATUS_TEACHING, - PLAYER_AI, ) from katrain.core.engine import KataGoEngine from katrain.core.game_node import GameNode @@ -55,7 +55,7 @@ class Game: self.root = move_tree self.komi = self.root.komi handicap = int(self.root.get_property("HA", 0)) - if handicap and not self.root.placements: + if handicap >= 2 and not self.root.placements: self.root.place_handicap_stones(handicap) else: board_size = katrain.config("game/size") diff --git a/tests/data/fox sgf error.sgf b/tests/data/fox sgf error.sgf new file mode 100644 index 0000000..7b6b448 --- /dev/null +++ b/tests/data/fox sgf error.sgf @@ -0,0 +1 @@ +(;GM[1]FF[4] SZ[19] GN[] DT[2020-07-20] PB[whatiskale] PW[V259081699] BR[15级] WR[14级] KM[0]HA[1]RU[Japanese]AP[GNU Go:3.8]RE[W+R]TM[1200]TC[3]TT[30]AP[foxwq]RL[0] ;B[pd];W[dp];B[pq];W[dd];B[fc];W[qo];B[np];W[nc];B[qf];W[pc];B[qc];W[qb];B[rc];W[od];B[pb];W[oc];B[rb];W[jd];B[cc];W[dc];B[cd];W[de];B[db];W[eb];B[cb];W[fb];B[gc];W[ec];B[gb];W[ce];B[be];W[bf];B[bd];W[ge];B[cf];W[dg];B[bg];W[kc];B[df];W[ef];B[cg];W[eg];B[fe];W[ff];B[fq];W[hq];B[cq];W[dq];B[cp];W[do];B[dr];W[er];B[cr];W[fr];B[eq];W[gq];B[fp];W[co];B[bo];W[bn];B[bp];W[go];B[fo];W[fn];B[cn];W[cm];B[gn];W[fm];B[qm];W[ki];B[oe];W[pe];B[qd];W[ne];B[of];W[nf];B[ng];W[og];B[pf];W[mg];B[nh];W[mi];B[ni];W[nj];B[mj];W[mh];B[ph];W[oj];B[pi];W[mk];B[lj];W[kl];B[nk];W[ok];B[nl];W[ol];B[ll];W[ml];B[nm];W[mm];B[lm];W[mn];B[nn];W[lk];B[kk];W[kj];B[jk];W[mo];B[ln];W[lo];B[jm];W[gm];B[hn];W[hm];B[in];W[jo];B[gp];W[hp];B[ho];W[lq];B[jj];W[hj];B[hk];W[gj];B[gk];W[fj];B[ji];W[dj];B[dh];W[ch];B[ci];W[ag];B[bh];W[rq];B[rn];W[pn];B[om];W[pm];B[no];W[ro];B[pl];W[ql];B[pk];W[pj];B[qk];W[qj];B[rk];W[qr];B[pr];W[mr];B[so];W[sp];B[sn];W[qq];B[ip];W[iq];B[jp];W[jq];B[lp];W[ko];B[mp];W[qn];B[rl];W[ob];B[qa];W[dn];B[jb];W[kb];B[fd];W[rj];B[ee];W[rh];B[rg];W[qh];B[sh];W[qg];B[pg];W[rf];B[sg];W[si];B[qi];W[sf];B[sg];W[re];B[qe];W[li]) \ No newline at end of file diff --git a/tests/data/fox sgf works.sgf b/tests/data/fox sgf works.sgf new file mode 100644 index 0000000..3e87856 --- /dev/null +++ b/tests/data/fox sgf works.sgf @@ -0,0 +1 @@ +(;GM[1]FF[4] SZ[19] GN[] DT[2020-07-25] PB[whatiskale] PW[注号用名] BR[15级] WR[15级] KM[0]HA[0]RU[Japanese]AP[GNU Go:3.8]RE[B+R]TM[1200]TC[3]TT[30]AP[foxwq]RL[0] ;B[pd];W[dp];B[pp];W[dd];B[fc];W[qq];B[pq];W[qp];B[qn];W[qo];B[pn];W[po];B[oo];W[rn];B[rm];W[sn];B[ql];W[qf];B[nc];W[qi];B[fq];W[hq];B[fo];W[lq];B[cn];W[dn];B[dm];W[en];B[dq];W[cp];B[cq];W[bp];B[bq];W[bn];B[cm];W[bm];B[ck];W[fn];B[cf];W[ee];B[cc];W[dc];B[cd];W[db];B[id];W[hd];B[hc];W[he];B[jq];W[fp];B[ep];W[gp];B[eo];W[do];B[go];W[ho];B[gn];W[fl];B[jo];W[lo];B[hn];W[er];B[fr];W[jn];B[io];W[hp];B[kn];W[jm];B[ln];W[ko];B[mn];W[jp];B[ip];W[kp];B[iq];W[hr];B[ir];W[is];B[js];W[hs];B[gs];W[in];B[gr];W[kr];B[mr];W[jr];B[gq];W[ks];B[mq];W[pr];B[or];W[mp]) \ No newline at end of file diff --git a/tests/test_parser.py b/tests/test_parser.py index 3011d3e..5dd3d2c 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -1,5 +1,9 @@ import os +from unittest.mock import MagicMock, patch +from katrain.core.base_katrain import KaTrainBase +from katrain.core.engine import KataGoEngine +from katrain.core.game import Game, KaTrainSGF from katrain.core.sgf_parser import SGF, SGFNode @@ -135,3 +139,17 @@ def test_ngf(): "SZ": [19], } == root.properties assert "pq" == root.children[0].get_property("W") + + +def test_foxwq(): + for sgf in ["data/fox sgf error.sgf", "data/fox sgf works.sgf"]: + file = os.path.join(os.path.dirname(__file__), sgf) + move_tree = KaTrainSGF.parse_file(file) + katrain = KaTrainBase(force_package_config=True, debug_level=0) + game = Game(katrain, MagicMock(), move_tree) + + assert [] == move_tree.placements + assert [] == game.root.placements + while game.current_node.children: + assert 1 == len(game.current_node.children) + game.redo(1)