Files
@ fdd10bc51cf8
Branch filter:
Location: Diana/src/diana/tests/testSgfParser.py - annotation
fdd10bc51cf8
2.1 KiB
text/x-python
optional background color
616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 616c96178973 | from itertools import chain
import unittest
from unittest import TestCase
import os
from sgfParser import strRowCol
from sgfParser.collection import Collection
from sgfParser.property import Property
from sgfParser.propValues import text,compose
dataDir=os.path.join(os.path.dirname(__file__), "data")
class TestUtils(TestCase):
def testTextPos(self):
s="abc\ndef\rgh\r\nij\n\rklmn"
rc=[
[1,2,3,4],
[1,2,3,4],
[1,2,3,4],
[1,2,3], [1], # don't care about LFCR, we unicode now
[1,2,3,4]
]
res=chain((r+1,c) for (r,row) in enumerate(rc) for c in row)
for (i,(r,c)) in zip(range(len(s)+1), res):
self.assertEqual(strRowCol(s, i), (r, c))
class TestProperty(TestCase):
def testName(self):
with self.assertRaises(AssertionError):
Property.create("[99]",0)
with self.assertRaises(AssertionError):
Property.create("99[99]",0)
i,prop=Property.create("MN[99]",0)
self.assertNotEqual((i,prop), (0,None))
self.assertEqual((i,prop.name), (6,"MN"))
def testText(self):
s=r"""[abc\
def
ghi]"""
self.assertEqual(text()(s,1)[1], "abcdef ghi")
self.assertEqual(text(False)(s,1)[1], "abcdef\nghi")
s="""[m\\no\\\tpqr\\]\\\\]"""
self.assertEqual(text()(s,1)[1], "mno pqr]\\")
self.assertEqual(text(False)(s,1)[1], "mno pqr]\\")
s="""[abc:def]"""
parsed=compose(text(composed=True),text(composed=True))(s,1)
self.assertEqual(str(parsed[1]), "abc:def")
class TestCollection(TestCase):
def testSubtrees(self):
c=Collection("""
(;B[aa]
(;W[ab]PB[Some Black]PW[Some White];B[ac])
(;W[bb]PB[Other Black]PW[Other White])
)""")
games=list(c.listGames())
self.assertEqual(len(games),2)
self.assertRegex(games[0].export(), r"^\(;B\[aa];(PB\[Some Black]|PW\[Some White]|W\[ab]){3};B\[ac]\)$")
self.assertRegex(games[1].export(), r"^\(;B\[aa];(PB\[Other Black]|PW\[Other White]|W\[bb]){3}\)$")
def testEmptySgf(self):
Collection("(;)")
def testSimpleSgf(self):
with open(os.path.join(dataDir, "simple.sgf")) as f:
Collection(f.read())
def testComplexSgf(self):
with open(os.path.join(dataDir, "kogos.sgf")) as f:
Collection(f.read())
if __name__ == '__main__':
unittest.main()
|