summaryrefslogtreecommitdiff
path: root/contrib/py-bindings/test.py
blob: f70165ac44428ab739a828ed605e447482034426 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/env python
import gf
import unittest


samples = [
	('is 89 odd',"Odd (Number 89)"),
	('is 21 prime',"Prime (Number 21)")]

import re
hexre = re.compile('0x[0-9a-f]+:[ ]*')
def rmprefix(obj):
	return `obj`
#	s = `obj`
#	m = hexre.match(s)
#	return m and s[m.end(0):]
	
class TestParsing(unittest.TestCase):
	def setUp(self):
		self.lexed = samples
		self.lang = 'QueryEng'
		self.pgf = "Query.pgf"
	def test_createPgf(self):
		q = gf.read_pgf(self.pgf)
		self.assertNotEqual(q,None)
	def test_startcat(self):
		pgf = gf.read_pgf(self.pgf)
		cat = pgf.startcat()
		self.assertEqual(rmprefix(cat),'Question')
	def test_createLanguage(self):
		l = gf.read_language(self.lang) 
		self.assertEqual(rmprefix(l),self.lang)
	def test_parse(self):
		s = self.lexed[0]
		pgf = gf.read_pgf(self.pgf)
		l = gf.read_language(self.lang)
		for s,t in self.lexed:
			ps = pgf.parse(s, l)
			self.failUnless(ps)
			pt = rmprefix(ps[0])
			self.assertEqual(pt,t)


class TestLinearize(unittest.TestCase):
	def setUp(self):
		self.samples = samples
		self.pgf = gf.read_pgf('Query.pgf') 
		self.lang = gf.read_language('QueryEng')

	def test_Linearize(self):
		l = self.lang
		for s,t in self.samples:
			t = self.pgf.parse(s, l)[0]
			self.assertEqual(s,self.pgf.lin(l,t))

if __name__ == '__main__':
	unittest.main()
	if 0:
		q = gf.read_pgf('Query.pgf')
		l = gf.read_language('QueryEng')
		ts = q.parse('is 10 prime', l)
		print ts[0]
		print q.lin(l,ts[0])