Files @ 7a9194696648
Branch filter:

Location: Diana/src/tests/testSgfParser.py

Laman
split propValues parsing into a separate module
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


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"))


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()