Files
@ 9ab11204b0f9
Branch filter:
Location: OneEye/src/tests/testStatebag.py - annotation
9ab11204b0f9
1.8 KiB
text/x-python
StateBag exportuje záznam partie, BoardView zobrazuje pořadí tahů
b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 9a3f61bf97f2 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 9a3f61bf97f2 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 b06733513452 | import os.path
from unittest import TestCase
import config as cfg
from util import BLACK as B,WHITE as W,EMPTY as _
from go.engine import SpecGo,Engine
import go.engine
from statebag import BoardState,StateBag,updateDiff
from .util import simpleLoadSgf,listStates
class TestBoardState(TestCase):
def testBasic(self):
s1=BoardState([
[_,_,_],
[_,_,_],
[_,_,_]
])
s2=BoardState([
[_,_,_],
[_,B,_],
[_,_,_]
])
g=SpecGo(3)
go.engine.eng=Engine(g)
s2.tryConnect(s1)
self.assertIs(s2.getPrev(), s1)
self.assertEqual(s2.getWeight(), 1)
def test2ply(self):
s1=BoardState([
[_,_,_],
[_,_,_],
[_,_,_]
])
s2=BoardState([
[_,_,_],
[_,B,_],
[_,_,_]
])
s3=BoardState([
[_,W,_],
[_,B,B],
[_,_,_]
])
g=SpecGo(3)
go.engine.eng=Engine(g)
s2.tryConnect(s1)
s3.tryConnect(s2)
self.assertIs(s3.getPrev(), s2)
self.assertEqual(s3.getWeight(), 1)
def testUpdateDiff(self):
files=["O-Takao-20110106.sgf","Sakai-Iyama-20110110.sgf"]
for f in files:
moves=simpleLoadSgf(os.path.join(cfg.srcDir,"tests/data",f))
states=listStates(moves)
for (i,j,k) in [(1,2,3),(10,20,30),(90,100,110),(20,70,120)]:
s1=states[i]
s2=states[j]
s3=states[k]
diff1=s2-s1
diff2=s3-s2
with self.subTest(file=f,ijk=(i,j,k)):
self.assertEqual(s3-s1,updateDiff(diff1,diff2))
class TestStateBag(TestCase):
def testReal(self):
go.engine.eng=Engine()
files=["O-Takao-20110106.sgf","Sakai-Iyama-20110110.sgf"]
for f in files:
moves=simpleLoadSgf(os.path.join(cfg.srcDir,"tests/data",f))
states=listStates(moves)
for k in range(1,3):
bag=StateBag()
i=0
for s_ in states:
i+=1
if i%(2*k-1)>=k: # keep k, skip k-1
continue
s=bag.pushState(s_)
if len(bag._states)>1:
self.assertIs(s.getPrev(), bag._states[-2])
|